为什么JavaScript逗号运算符在与函数应用程序一起使用时需要括号?

时间:2015-08-07 08:30:39

标签: javascript

我可以使用JavaScript中的comma operator来评估多个表达式并返回最后一个表达式。

x = "foo", "bar"; // "bar"
y = 0, 21, 42; // 42

但是如果涉及函数应用程序,为什么括号必不可少?

arr = [1,2,3];
z1 = (arr.push(4), arr); // [1,2,3,4]
z2 = arr.push(5), arr; // 5 ??

为什么最后一条语句将 z2 设置为 5 而不是 arr ?这与前一个正确设置 z1 的语句的前一个有何不同?

1 个答案:

答案 0 :(得分:7)

作为您已关联的资源状态:

  

逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。

从左到右,这是你的结构:

  1. z2 = arr.push(5)
  2. arr
  3. 由于缺少括号,z2 = arr.push(5)是来自arr的单独语句并首先执行,然后arr被执行(并返回)。 z2等于5,但整行的回报为[1,2,3,4,5]。以下是输入JavaScript控制台的代码的屏幕截图:

    Example

    由于括号,

    z1等于[1,2,3,4]。执行arr.push(4),然后执行arr并返回z1变量。