Uint8ArrayとUint8ClampedArrayの違い
W3Cによれば、この違いは値がclampされるかどうからしい。clampというのは、範囲の指定されたintにその範囲を超えた値を代入したとき、通常であればmoduloで処理するところを、範囲の上限の値を代わりに代入する、というものだ。
// NOTE: node.js doesn't support Uint8ClampedArray "use strict"; // normal typed array var a = new Uint8Array(1); a[0] = 1000; console.log(a[0]); // 1000 % 0xFF => 232 // clamped typed array var a = new Uint8ClampedArray(1); a[0] = 1000; console.log(a[0]); // uint8 max => 255
どういういきさつで導入されたのかわからないが、不要に複雑にしすぎている気がする。