在JavaScript中,
Uint8Array
和Uint8ClampedArray
有什么区别?
我了解到Uint8ClampedArray
用于canvas像素操作。那为什么会这样,有什么好处呢?Uint8Array
和Uint8ClampedArray
有什么区别?
我了解到Uint8ClampedArray
用于canvas像素操作。那为什么会这样,有什么好处呢?看一下Uint8ClampedArray和Uint8Array的示例,它们之间的区别在于赋值时如何处理数值。
如果您试图将一个受限数组的元素设置为范围0-255
之外的任何值,它将简单地默认为0或255(具体取决于值是较小还是较大)。而普通的Uint8Array
数组只取值的前8位。
例如:
var x = new Uint8ClampedArray([17, -45.3]);
console.log(x[0]); // 17
console.log(x[1]); // 0
console.log(x.length); // 2
var x = new Uint8Array([17, -45.3]);
console.log(x[0]); // 17
console.log(x[1]); // 211
console.log(x.length); // 2
Uint8Array([0.9])
的结果为[0]
,但Uint8ClampedArray([0.9])
的结果为[1]
。也就是说,使用了阈值版本后会进行四舍五入,而基础版本则向下取整。 - dan-manUint8ClampedArray
的行为会有益,也没有给出任何线索。 - Ilya