Bar*_*ney 0 javascript operators execution variable-assignment order-of-execution
据我所知,x++基本上是一种说法x = x + 1.到目前为止,这么清楚.在前端Javascript中,我偶尔会看到++x- 我似乎记得从jsPerf测试中我再也找不到了(一个Google如何++有效?)这在某个特定版本的IE中以某种方式获得了小的性能优势,并让它去那.
但是我最近遇到了一些在执行顺序(JS代码)中出现奇怪怪癖的东西:
var x = 1;
console.log(x++); // 1 (?!)
console.log(x); // 2
Run Code Online (Sandbox Code Playgroud)
...而
var x = 1;
console.log(++x); // 2 (what I would've expected)
console.log(x); // 2
Run Code Online (Sandbox Code Playgroud)
我无法理解这一点.当操作和赋值在括号内时,我们如何返回未修改的变量,因此在console.log调用之前应该执行所有权限,更不用说执行和返回了?
这是两件不同的事情
x++
Run Code Online (Sandbox Code Playgroud)
是一个后增量.它x在更改之前返回但随后更改它:
tmp = x;
x = x+1;
return tmp;
Run Code Online (Sandbox Code Playgroud)
而
++x
Run Code Online (Sandbox Code Playgroud)
是一个预增量.它首先更改x并在之后返回新值:
x = x+1;
return x;
Run Code Online (Sandbox Code Playgroud)
第二个也稍快,因为你的编译器/解释器不需要创建临时变量并复制数据.
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |