2014-02-17 27 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