TypeError: invalid arguments

Сообщение

TypeError: invalid arguments (Firefox)

Тип ошибки

TypeError

Что не так?

Конструкторы типизированных массивов требуют либо

  • длину,
  • другой типизированный массив,
  • массивоподобные объекты,
  • итерируемые объекты либо
  • объект ArrayBuffer

чтобы создать новый типизированный массив. Другие аргументы конструктора не создают допустимый типизированный массив.

Примеры

Типизированные массивы, например Uint8Array, не могут быть построены из строки. На самом деле строки вообще не могут быть в типизированных массивах.

var ta = new Uint8Array("nope");
// TypeError: invalid arguments

Различные способы создания допустимого Uint8Array:

 // From a length
var uint8 = new Uint8Array(2);
uint8[0] = 42;
console.log(uint8[0]); // 42
console.log(uint8.length); // 2
console.log(uint8.BYTES_PER_ELEMENT); // 1

// From an array
var arr = new Uint8Array([21,31]);
console.log(arr[1]); // 31

// From another TypedArray
var x = new Uint8Array([21, 31]);
var y = new Uint8Array(x);
console.log(y[0]); // 21

// From an ArrayBuffer
var buffer = new ArrayBuffer(8);
var z = new Uint8Array(buffer, 1, 4);

// From an iterable 
var iterable = function*(){ yield* [1,2,3]; }(); 
var uint8 = new Uint8Array(iterable); 
// Uint8Array[1, 2, 3]

Смотрите также