function a(){
var num = 0;
for(var i = 0;i < 10;i++){
num = num++;
}
console.log(num);
};
a();
为什么结果是 0?
function a(){
var num = 0;
for(var i = 0;i < 10;i++){
num = num++;
}
console.log(num);
};
a();
为什么结果是 0?
++在后,先赋值再自增;++在前,先自增再赋值
function a(){
var num = 0;
for(var i = 0;i < 10;i++){
num = ++num;
}
console.log(num);
};
a();
没必要研究这个, 因为没有意义.
这种容易引发歧义东西, 不要用, 单独写到一行.
我就敢问各位, 有几个不是事后诸葛亮, 事前你知道? !
JS类似这种细节的东西多了, 你能记住吗?
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
num++
会将num
自增,然后返回num
原来的值。num = num++;
将num
原来的值(自增前的值,0)又赋值给了num
,于是num = num++
整体并没有改变num
的值。关于评论里提到的赋值自增的顺序问题,还是去看标准吧。
自增:
可以看到 num++,先完成了自增(第4步),然后才返回。
赋值只能在拿到返回之后执行,自然是将旧值赋给(已经自增之后的) num 了。
注意这句话在不同的编程语言里可能会有不同的解释,不要混淆 ...