2014-02-17 30 views

回答

59

看看Uint8ClampedArrayUint8Array的示例,看起来不同之处在于分配值时如何处理值。

如果您试图将一个元素设置为一个被限制的数组,其值为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 
+8

还要注意的是'Uint8Array([0.9])''是[0]','但Uint8ClampedArray([0.9])''是[1]',即。夹紧版本使用四舍五入,但基本版本使用地板。 –

+0

OP提到这是用于画布中的像素值,这是饱和算术的捷径吗? – Indolering

+0

@Felix,所以'Uint8Array'更高性能,因为没有边界检查需要完成? – Pacerier