JS 中所有数字均采用双精度浮点数存储,这样在存储大量数据的时候可能会导致严重的空间浪费,这就引入类型化数组,类型化数组可以优化多个数字的存储,注意,是数字。
具体分为以下几个:
Int8Array:8 位有符号整数 (-128~127)Uint8Array:8 为无符号整数 (0~255)Int16Array:16 位有符号整数 (-32768~32767)Uint16Array:16 为无符号整数 (0~65535)Int32Array:32 位有符号整数 (-2147483648~2147483647)Uint32Array:32 为无符号整数 (0~4294967295)Float32Array:32 位单精度浮点数Float64Array:64 位双精度浮点数
以上几个东西都是构造函数,我们可以通过 new 关键字创建一个指定类型的数组,注意,初始化的时候和 Array 相同,但是如果没有赋值的默认值会是 0,而非空。
我们可以访问上列数组的 byteLength 属性,访问占用了多少字节
注意,这几个类型化数组构造函数只能传入一个参数,这个参数如果是数字,会创建一个指定长度的类型化数组,如果传入的是一个其他类型化数组则会进行转换。如果我们要在初始化的时候指定元素,需要使用数组里面的
of方法,当然,里面也有from方法,可以将一个可迭代对象转换为类型化数组。
类型化数组存在表示范围的限制,如果数字超过了限制,会导致溢出
类型化数组的其他用法和普通数组基本一样,但是有下面的几个特点:
- 不能增加和删除数据,类型化数组长度固定