Да, вы можете положиться на new Uint8Array( length )
для создания ArrayBuffer с byteLength length
.
Интересующие нас шаги для создания new Uint8Array( length )
:
Теперь, хотя это верно для Uint8Array
, это не для всех TypedArrays.
Важной частью здесь является мой четвертый пункт, где elementSize
определяется из этой таблицы , поскольку это значение будет использоваться в качестве множителя для последнего аргумента byteLength
.
test( Uint8Array ); // 2
test( Uint16Array ); // 4
test( Float64Array ); // 16
function test( constructor ) {
console.log( constructor.name, new constructor( 2 ).buffer.byteLength );
}