为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2019-03-12 10:15:15
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,只要为真就行,至于为什么,我想应该是表达式的执行顺序导致了这个结果


查看完整回答
反对 回复 2019-03-22
?
互换的青春

TA贡献1797条经验 获得超6个赞

因为 += 的优先级小于&& 。 所以你可以理解成酱紫。


a += (6 && a++)

然后 6 && a++ 的结果是4 。 所以替换一下就变成。


a += 4

答案就是8


查看完整回答
反对 回复 2019-03-22
  • 2 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信