javascript - 理解 JavaScript 中类型化数组的概念

标签 javascript arraybuffer typed-arrays

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

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

最佳答案

当数据以特定的非 javascript 形式出现并且您想通过 javascript 访问该数据时,通常会使用类型化数组。类型数组用于创建数据缓冲区的特定 View 。缓冲区是原始数据, View 是一种读取/解释/访问该数据的方法。

如果您不与外部世界交互并且不尝试处理在 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

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

无意就各种语言特性的可取性展开争论,通常认为使用类型化语言编程更安全,执行引擎可能可以更快地操作数据,但非类型化或弱类型化语言有时更灵活- 使某些事情变得更简单或更清洁。

关于javascript - 理解 JavaScript 中类型化数组的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19061506/

相关文章:

javascript - 如何触发focusout事件

scala - 在 Scala/Spark 中合并多个连续条目

javascript - NodeJS流暂停/恢复不适用于XMLHttpRequest,但适用于curl?

android - TypedArray.getType(int index) 中的整数值对应什么?

JavaScript TypedArray 混合类型

javascript - onclick 传递按钮的值

javascript - 单击弹出窗口外的任意位置关闭弹出窗口

Javascript 函数 - 将地理位置代码转换为街道地址

javascript - UTF-8 ArrayBuffer 和 String 之间的转换

javascript - 可以向类型化数组添加属性吗?