我可以在JavaScript中使用逗号运算符来评估多个表达式并返回最后一个表达式.
x = "foo", "bar"; // "bar"
y = 0, 21, 42; // 42
Run Code Online (Sandbox Code Playgroud)
但是,如果涉及函数应用程序,为什么括号必不可少?
arr = [1,2,3];
z1 = (arr.push(4), arr); // [1,2,3,4]
z2 = arr.push(5), arr; // 5 ??
Run Code Online (Sandbox Code Playgroud)
为什么最后一个语句将z2设置为5而不是arr?这与前一个正确设置z1的语句有什么不同?
作为您链接的资源状态:
逗号运算符计算其每个操作数(从左到右)并返回最后一个操作数的值.
从左到右,这是你的结构:
z2 = arr.push(5)arr由于缺少括号,z2 = arr.push(5)是一个单独的语句arr并首先执行,然后arr执行(并返回).z2等于5,但整条线的回报是[1,2,3,4,5].以下是输入JavaScript控制台的代码的屏幕截图:
z1等于[1,2,3,4]因为括号.arr.push(4)执行,然后arr执行并返回到z1变量.
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |