Javascript 类型化数组的限制?

Javascript 类型化数组的限制?,javascript,typed-arrays,Javascript,Typed Arrays,我用Firefox4玩过一些类型化数组,并注意到了一些事情 可以创建的ArrayBuffer的大小是范围[0..2147483647]中的整数。传递2147483648会引发与传递负数相同的错误,传递4294967296会返回一个空的ArrayBuffer,传递4294967297会返回一个长度1的ArrayBuffer。因此,我假设大小值被解释为有符号32位整数 虽然默认情况下只能从ArrayBuffer对象创建Int32Array对象,这些对象的ByTeleLength是四的倍数,但我很惊

我用Firefox4玩过一些类型化数组,并注意到了一些事情

  • 可以创建的
    ArrayBuffer
    的大小是范围
    [0..2147483647]
    中的整数。传递
    2147483648
    会引发与传递负数相同的错误,传递
    4294967296
    会返回一个空的
    ArrayBuffer
    ,传递
    4294967297
    会返回一个长度
    1
    ArrayBuffer
    。因此,我假设大小值被解释为有符号32位整数

  • 虽然默认情况下只能从
    ArrayBuffer
    对象创建
    Int32Array
    对象,这些对象的
    ByTeleLength
    是四的倍数,但我很惊讶
    new Int32Array(new ArrayBuffer(2147483644))
    导致
    Int32Array
    抛出与传递
    ArrayBuffer
    时得到的错误相同的错误,该错误不是四的倍数,而每隔四个较低的倍数作为
    ArrayBuffer
    大小有效


虽然我注意到的第一件事很正常(虽然选择有符号整数似乎有些浪费),但我特别好奇我注意到的第二件事。这些实现行为是否在任何规范中正式定义?

如果这些新功能中存在一些bug,我不会感到惊讶。如果这些新功能中存在一些bug,我也不会感到惊讶。