js && 别人发过来的一道面试题 不太明白运算过程

function dd(){


var a = 4;

if(a += 6 && a++){

    console.log(a);

}

按照之前的理解 因为不满足判断条件 应该是不执行if里面的东西 返回undefined; 可结果是输出 8 求解


繁花不似锦
浏览 404回答 2
2回答

宝慕林4294392

结果等效于var a = 4;if(1){    eval(a += 6 && a++); // 先计算 6 && a++ 的结果为a,也就是4,然后再计算 a += 4    console.log(a);} 上面的6也可以是10000,只要为真就行,至于为什么,我想应该是表达式的执行顺序导致了这个结果

互换的青春

因为 += 的优先级小于&& 。 所以你可以理解成酱紫。a += (6 && a++)然后 6 && a++ 的结果是4 。 所以替换一下就变成。a += 4答案就是8
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript