查看spec,似乎没有明确定义以下行为:
var array = new Uint8Array( 1 );
var result = ( array[ 0 ] = 0x100 );
// Is result === 0x100 or 0 ?
Chrome正在返回0x100
而不是0
,但是我可以相信此结果是否一致?
答案 0 :(得分:3)
你在这做什么:
var result = ( array[ 0 ] = 0x100 );
实际上与同时设置数组和结果相同(简称)(括号无关紧要,因为0x100是被评估的并传递给结果的那个):
var result = array[ 0 ] = 0x100;
或扩展:
array[ 0 ] = 0x100;
var result = 0x100;
所以很明显result
在这种情况下会是0x100(256)。
但数组的内容为0,如果你直接登录就可以看到:
console.log(array[ 0 ]);
(如果使用Uint8ClampedArray
,则值为0xff或255)。
<强> Fiddle 强>
因此,在这种情况下,结果将是一致的,但是相对于结果变量和值集绕过数组。数组也将被设置,但该值适合无符号字节范围,而值为结果var的原样。