var i=5;
if(i+=1&&i++){
console.log(i);
}
结果是10 咋运行的
my god...
i = 5
i += 1 && i++
相当于
i= 5
t1 = i++ // t1 = 5
tmp = 1 && t1 // tmp = 1 && 5 = 5
i = i + tmp // i = 5 + 5 = 10
按编译原理的过程去解析这个语句
i += 1 && i++
等价于
i = i + (1 && i++)
从左到右执行
大概就这样吧...
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
运算符优先级问题.
Javascript operator precedence table
postfix ++
>&&
>+=
.相当于
(i+=(1&&(i++)))
. 此外,由于 Javascript 中逻辑运算符会返回对象, 所以1&&5
结果为5
. 所以是10
.