据我所知,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;


第二个也稍快一些,因为您的编译器/解释器不需要创建临时变量并复制数据。

10-05 20:29
查看更多