据我所知,x++
本质上是一种更简洁的说法x = x + 1
。到目前为止,很清楚。在前端 Javascript 中,我偶尔会看到++x
——我似乎记得从jsPerf测试中我再也找不到(谷歌如何++
有效地?)这在某种特定版本的 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
调用之前执行,更不用说执行和返回了?