JavaScript中逗号运算符的作用是什么?(x,x1,x2,…,xn)

13
在JavaScript中,(x, x1, x2, …, xn)总是返回xn
在Python中,这段代码称为元组,并返回不同的值。
我的问题是JavaScript中这段代码的目的是什么?你有一些实际的例子吗?
3个回答

10

逗号操作符会对每个操作数进行评估,但只返回最后一个评估的结果。它可用于在for循环中初始化多个变量。

var str = "Hello, World!";
for(var i = 0, len = str.length; i < len; i++)
    console.log(str.charAt(i));

编辑:正如评论中指出的那样,这并不是逗号运算符的真正示例,这只是 var。你可以查看此页面以获取实际示例。


1
参考资料可在 ECMA-262 规范的 §11.14 中找到。 - Reid
6
从技术上讲,你的“逗号运算符”示例并没有使用逗号运算符,尽管其中包含逗号符号。那是一个var语句,它采用了这种形式var name1 [= value1][, name2 [= value2][, ...]]; 但是将逗号符号与实际的逗号运算符用法不同。实际的逗号运算符会计算和形成表达式,而var语句则不会。 - Delan Azabani
确实。已编辑帖子并附上真实示例。 - Alex Turpin

6

http://en.wikipedia.org/wiki/Comma_operator

与C语言和C++相似,逗号运算符同时计算左右操作数并返回右操作数。在实际应用中,a, b可以用于代替a ? b : b,还可以用作一种把多个“语句”放入一个语句中的有限方式,例如在for循环的第一部分或第三部分中。

请注意,使用var通过逗号分隔声明和/或定义多个变量不是使用逗号运算符,即使它们都使用逗号符号。逗号运算符计算结果并形成一个表达式,可用作更大表达式或语句的一部分值。而var是一个完整的语句类型,格式为:

var name1 [= value1][, name2 [= value2][, ...]];

2
哇——那个三元运算符简直就是毫无意义的典范。最好只写a; b;,或者如果你需要赋值一个变量,就写a; var whatever = b; - Reid

2

MDC文档提供了一个实际使用逗号运算符的好例子:

如果a是一个10x10的二维数组,以下代码使用逗号运算符同时递增两个变量。该代码打印数组中对角线元素的值:

for (var i = 0, j = 9; i <= 9; i++, j--)
  document.writeln("a[" + i + "][" + j + "] = " + a[i][j]);

1
请注意,在您的示例中,只有 i++, j++ 是逗号运算符的使用。var i = 0; j = 9; 不是逗号运算符的使用,即使它包含逗号符号 - Delan Azabani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接