function dd(){var a = 4;if(a += 6 && a++){ console.log(a);} }按照之前的理解 因为不满足判断条件 应该是不执行if里面的东西 返回undefined; 可结果是输出 8 求解
2 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
结果等效于
var a = 4;
if(1){
eval(a += 6 && a++); // 先计算 6 && a++ 的结果为a,也就是4,然后再计算 a += 4
console.log(a);
}
上面的6也可以是10000,只要为真就行,至于为什么,我想应该是表达式的执行顺序导致了这个结果
互换的青春
TA贡献1797条经验 获得超6个赞
因为 += 的优先级小于&& 。 所以你可以理解成酱紫。
a += (6 && a++)
然后 6 && a++ 的结果是4 。 所以替换一下就变成。
a += 4
答案就是8
添加回答
举报
0/150
提交
取消