逗号运算符(,)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
逗号(,
)运算符对它的每个操作数从左到右求值,并返回最后一个操作数的值。这让你可以创建一个复合表达式,其中多个表达式被评估,复合表达式的最终值是其成员表达式中最右边的值。这通常用于为 for
循环提供多个参数。
尝试一下
语法
js
expr1, expr2, expr3/* , … */
参数
expr1
、expr2
、expr3
……-
一个或多个表达式,最后一个表达式的返回值会作为当前复合表达式的值。
描述
当你想要在期望一个表达式的位置包含多个表达式时,可以使用逗号运算符。这个运算符最常用的一种情况是:在 for
循环中提供多个参数。
逗号运算符与数组、对象和函数参数中的逗号含义完全不同。
示例
假设 a
是一个二维数组,每一维度包含 10 个元素,以下代码通过使用逗号运算符,可以同时递增 i
和递减 j
。
下面的代码打印一个二维数组中斜线方向的元素:
js
for (let i = 0, j = 9; i <= 9; i++, j--) {
console.log(`a[${i}][${j}] = ${a[i][j]}`);
}
请注意,赋值中的逗号运算符可能看起来没有逗号运算符的正常效果,因为它们并不存在于表达式中。在以下示例中,a
被设置为 b=3
的值(它是 3),但是表达式 c=4
仍然会经过评估,且它的值(也就是 4)会返回至控制台。这是由于运算符的优先级和结合性。
js
let a, b, c;
a = b = 3, c = 4; // 值 4 返回到控制台
console.log(a); // 3 (left-most)
let x, y, z;
x = (y = 5, z = 6); // 值 6 返回到控制台
console.log(x); // 6 (right-most)
处理后返回
另一个使用逗号运算符的例子是在返回值前处理一些操作。如前所述,逗号运算符只会返回最后一个元素,但其他表达式都会被求值。所以,可以这么做:
js
function myFunc() {
let x = 0;
return (x += 1, x); // 与 return ++x; 等价
}
规范
Specification |
---|
ECMAScript Language Specification # sec-comma-operator |
浏览器兼容性
BCD tables only load in the browser