Skip to content

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 方法,可以将一个可迭代对象转换为类型化数组。

类型化数组存在表示范围的限制,如果数字超过了限制,会导致溢出

类型化数组的其他用法和普通数组基本一样,但是有下面的几个特点:

  • 不能增加和删除数据,类型化数组长度固定

以笔记为镜,可以知得失