javascript运算符优先级

代码如下:

var x = 1;

x = (x, x++);
console.log(x); // 1

问题:知道运算符优先级 () > 自增 > 赋值 > 逗号,但是还是不能理解这段代码是如何运行的?最终结果为什么是1?

阅读 1.7k
2 个回答
//第一步,因为()优先级高于赋值,所以先看()中内容。看到后,发现有自增,所以计算。
x++ //结果是1
//第二步,计算()的值
(x, x++) //相当于(1,1),也就是1
//第三步,赋值
x = 1

所以结果是1。

以下的结果是2:

var x = 1;
x = (x, ++x);
console.log(x); // 2
var x = 1;

x = (1, 2, 3); // x = 3
console.log(x); // 3
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题