var o = { x : 1};
var p = null;
// =>1 : o值真值,因此返回值为o.x
console.log(o && o.x)
// =>null: p是价值,因此将其返回,而并不去计算p.x
console.log(p && p.x)
带操作的赋值运算
a op = b
a = a op b
在a包含具有副作用的表达式(比如函数调用和赋值操作)的时候,两者不等价,比如:
data[i++] *= 2;
data[i++] = data[i++] * 2;
var data = [1,2,3],
data2 = [1,2,3],
i = 0,
j = 0;
data[++i] *= 2;
console.log(data)
data2[++j] = data2[++j] * 2;
console.log(data2)