链接
说
逗号运算符评估两者 它的操作数(从左到右)和 返回第二个值 操作数。
以及作为一个例子
for (var i=0, j=9; i <= 9; i++, j--)
document.writeln("a["+i+"]["+j+"]= " + a[i][j]);
无法准确理解这一点。 “返回第二个操作数的值” - 这意味着什么?
感谢您提前提供任何帮助。
答案 0 :(得分:1)
就像描述一样简单:
console.log((1,2) == 2); // true
表达式(1,2)
将返回第二个操作数(2
)的值。
编辑:您发布的示例并不能很好地举例说明逗号运算符的“返回值”,因为for
循环上的增量表达式的值不是用过的。该表达式已经过评估,但没有对其返回值进行任何操作。
for ([initialExpression]; [condition]; [incrementExpression])
statement
答案 1 :(得分:1)
for
循环索引调整7:~$ js
js> 1,2
2
js> 1,2,3
3
js> 1,2,3,4
4
js>
这个想法是第一个表达式将纯粹用于分配副作用。整个表达式的值是,
运算符的右操作数的值。
通常情况下,这两个表达式的值都没有被评估。在您的示例中,,
运算符的使用是将两个索引调整塞入for
循环的第三个表达式中。没有使用任何值,它纯粹是为了副作用。这是一个更为复杂的例子:
js> i = 10; j = 20;
20
js> t = i++, j--;
20
js> i
11
js> j
19
js> t
10
您可以看到两个表达式都已经过评估(因此i
和j
被撞了)但t
的值是第二个表达式j--
的值。
答案 2 :(得分:0)
var m = (false, "string");
m === false; // is false
m === "string"' // is true
它实际上适用于任意数量的操作数:
var n = (1,2,3,4,5,6);
n === 6; // is true
答案 3 :(得分:0)
我认为使用函数演示更清楚:
console.clear();
function a() {
console.log('function a executed, its return value is \'ignored\'');
return 1;
}
function b() {
console.log('function b executed and expression (a(),b()) will evaluate to the return value from b');
return 2;
}
console.log((a(),b())==2);
输出:
function a executed, its return value is 'ignored'
function b executed and expression (a(),b()) will evaluate to the return value from b
true