Asa*_*din 6 javascript increment variable-assignment prefix-operator
我正在讨论前缀增量运算符,我们似乎遇到了分歧.
运行此代码时:
var x = 0;
x = ++x;
Run Code Online (Sandbox Code Playgroud)
是第二行相当于:
很难区分,因为结果是相同的(都导致x值为1)
我相信当赋值的左侧是变量本身时,该值不会保存到原始变量中.
我的对手不同意并认为只要使用++操作员,该值就会保存到原始变量中.
我们哪一个是对的?
它被保存,因此它类似于第一个例子.以此代码为例:
var v = 0;
v = ++v + ++v + ++v;
// Returns 6
Run Code Online (Sandbox Code Playgroud)
那是因为这将转化为:
v = (0+1) + ((0+1)+1) + (((0+1)+1)+1);
Run Code Online (Sandbox Code Playgroud)
或者,更准确:
v = 0+1 +
v = 1+1 + //Previous value of v + 1
v = 2+1 //Previous value of v + 1
Run Code Online (Sandbox Code Playgroud)
为什么?
++v将首先保存v的递增值,然后它将返回此递增的值.
要简化操作,请在控制台中尝试:
x = 0;
++x;
Run Code Online (Sandbox Code Playgroud)
如果++x能解决x + 1,x现在的价值仍然是0,对吧?
不,你的x意志1.这意味着++x必须有一个赋值运算符.
| 归档时间: |
|
| 查看次数: |
4101 次 |
| 最近记录: |