Ограничения типизированных массивов? - PullRequest
2 голосов
/ 18 мая 2011

Я немного поигрался с типизированными массивами с помощью Firefox 4 и заметил некоторые вещи.

  • Размер ArrayBuffer, который можно создать, является целым числом вдиапазон [0..2147483647].Передача 2147483648 вызывает ту же ошибку, что и передача отрицательного числа, передача 4294967296 возвращает пустое ArrayBuffer, а передача 4294967297 возвращает ArrayBuffer с длиной 1.Таким образом, я предполагаю, что значение размера интерпретируется как 32-разрядное целое число со знаком.

  • В то время как Int32Array объекты могут создаваться по умолчанию только из ArrayBuffer объектов, чья byteLength равнакратное четырем, я был удивлен, что new Int32Array(new ArrayBuffer(2147483644)); заставил Int32Array выдать ту же ошибку, которую я получил бы за пропуск ArrayBuffer, который не кратен четырем, в то время как все остальные младшие кратные четырех работали какArrayBuffer size.

Хотя первое, что я заметил, довольно нормально (хотя несколько расточительно, что целые числа со знаком, похоже, были выбраны), мне особенно любопытно второезаметил.Являются ли эти способы реализации формально определенными в какой-либо спецификации?

...