3

我想知道什么是 JavaScript 中的类型化数组(例如Int16Array, Uint32Array,Uint8ClampedArray等)。我是这个字节级概念的新手,因为我真的不明白所说的内容。例如,如果您在谈论 32 位操作时查看这篇文章,那么我会迷路...
https://hacks.mozilla.org/2011/12/faster-canvas-pixel-manipulation-with-typed-数组/

我知道一个字符在 JavaScript 中是两个字节,并且我知道类型化数组只是一个存储字节的缓冲区(?),然后数据视图(例如上面这三个)用于根据它们的类型以某种方式读取/修改字节信息。但是,我无法理解如何使用它们或它们比“普通”数组有什么好处。有人可以解释类型化数组的用例和好处吗?

4

1 回答 1

2

类型化数组通常在与外部世界交互时使用,其中数据以特定的非 javascript 形式出现,并且您希望通过 javascript 访问该数据。类型数组用于创建数据缓冲区的特定视图。缓冲区是原始数据,视图是读取/解释/访问该数据的方法。

如果您不与外部世界交互并且不尝试处理在 javascript 之外创建的数据或发送到 javascript 之外的代理,那么通常只使用普通的 javascript 数组而不使用缓冲区和类型化数组。

这就是您询问的类型:

Int16Array: An array of 16-bit integers (signed) - 2 bytes per entry
Uint8Array: An array of 8-bit unsigned integers - 1 byte per entry
Uint32Array: An array of 32-bit unsigned integers - 4 bytes per entry

您可以在此处查看所有类型化数组的列表:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays

当变量是typed时,这意味着该变量具有非常特定的类型并且只有该类型。类型可能是字符串、16 位有符号整数、浮点数等……在 javascript 中,变量可以保存任何类型的数据,因此它没有具体类型。在其他语言(例如 C)中,变量通常预先声明为具有特定类型,并且(不使用特定覆盖)您不能将不同类型的数据分配给该变量。

不打算就各种语言特性的可取性展开争论,通常认为用类型化语言编程更安全,并且执行引擎可能可以更快地操作数据,但无类型或弱类型语言有时可以更灵活——使其做一些事情更简单或更干净。

于 2013-09-27T23:34:10.060 回答