我想知道JavaScript中的类型数组(例如Int16Array
,Uint32Array
,Uint8ClampedArray
等)。我是这个字节级概念的新手,因为我并没有真正得到所说的内容。例如,如果你在谈到32位操作时看一下这篇文章,那么我就失去了...
https://hacks.mozilla.org/2011/12/faster-canvas-pixel-manipulation-with-typed-arrays/
我知道一个字符是JavaScript中的两个字节,我知道类型化数组只是一个存储字节的缓冲区(?)然后数据视图如上面这三个用于以某种方式读取/修改字节信息,具体取决于它们类型。但是,我无法理解如何使用它们或它们对“普通”数组有什么好处。有人可以解释类型化数组的用例和好处吗?
答案 0 :(得分: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)中,变量通常预先声明为保存特定类型,并且(不使用特定覆盖)您不能将不同类型的数据分配给该变量。
不打算就各种语言特性的可取性展开争论,通常认为用类型化语言编程更安全,数据也许可以被执行引擎更快地操纵,但是无类型或弱类型语言有时可以更灵活 - 使某些事情变得更简单或更清洁。