据我所知,x++
本质上是说x = x + 1
的更简洁的方式。到目前为止,如此清晰。在前端Javascript中,我偶尔会看到++x
—我似乎从jsPerf测试中记得,我再也找不到(如何有效地使用一个Google ++
?),这种方式在特定版本的IE,然后放开它。
但是,我最近遇到了一些在执行顺序(JS代码)方面出现怪异现象的事情:
var x = 1;
console.log(x++); // 1 (?!)
console.log(x); // 2
……而
var x = 1;
console.log(++x); // 2 (what I would've expected)
console.log(x); // 2
我无法解决这个问题。当操作和赋值在圆括号内时,如何才能返回未修改的变量,因此应该完全在调用
console.log
之前执行所有权限,更不用说执行并返回了? 最佳答案
那是两件事
x++
是后增量。它在更改之前返回
x
,然后更改它:tmp = x;
x = x+1;
return tmp;
而
++x
是预先增加的。它首先更改
x
,然后返回新值:x = x+1;
return x;
第二个也稍快一些,因为您的编译器/解释器不需要创建临时变量并复制数据。