Javascript 类型化数组的限制?
我用Firefox4玩过一些类型化数组,并注意到了一些事情Javascript 类型化数组的限制?,javascript,typed-arrays,Javascript,Typed Arrays,我用Firefox4玩过一些类型化数组,并注意到了一些事情 可以创建的ArrayBuffer的大小是范围[0..2147483647]中的整数。传递2147483648会引发与传递负数相同的错误,传递4294967296会返回一个空的ArrayBuffer,传递4294967297会返回一个长度1的ArrayBuffer。因此,我假设大小值被解释为有符号32位整数 虽然默认情况下只能从ArrayBuffer对象创建Int32Array对象,这些对象的ByTeleLength是四的倍数,但我很惊
- 可以创建的
的大小是范围ArrayBuffer
中的整数。传递[0..2147483647]
会引发与传递负数相同的错误,传递2147483648
会返回一个空的4294967296
,传递ArrayBuffer
会返回一个长度4294967297
的1
。因此,我假设大小值被解释为有符号32位整数ArrayBuffer
- 虽然默认情况下只能从
对象创建ArrayBuffer
对象,这些对象的Int32Array
是四的倍数,但我很惊讶ByTeleLength
导致new Int32Array(new ArrayBuffer(2147483644))
抛出与传递Int32Array
时得到的错误相同的错误,该错误不是四的倍数,而每隔四个较低的倍数作为ArrayBuffer
大小有效ArrayBuffer
虽然我注意到的第一件事很正常(虽然选择有符号整数似乎有些浪费),但我特别好奇我注意到的第二件事。这些实现行为是否在任何规范中正式定义?如果这些新功能中存在一些bug,我不会感到惊讶。如果这些新功能中存在一些bug,我也不会感到惊讶。