This post激励了我。我做了一些测试。
console.log( false, 5 );
打印false 5
,没关系。
console.log( ( false, 5 ) );
打印5
。现在我们知道它也可以,因为( false, 5 )
返回5
。
但为什么console.log( false, {}, 5 );
会打印false Object {} 5
?
console.log( ( false, {}, 5 ) );
甚至console.log( ( false, { i:0 }, 5 ) );
同时打印5
。为什么5
优先于{}
?
您可以在此处看到:http://jsfiddle.net/3uUwY/
答案 0 :(得分:6)
comma operator始终返回最后一个元素,即5。
答案 1 :(得分:1)
使用括号时,您强制Javascript评估该表达式。
console.log(a, b, c); // 3 parameters, the function prints a, b and c
console.log((a, b, c)); // 1 parameter. It prints the result of
// evaluating (a, b, c) and, as it's said
// in the other answer, it returns the last element
// of the expression.
答案 2 :(得分:1)
通过放置brakets,你只能为console.log创建一个参数。所以关注
console.log( false, 5 ); // here you are using log function with 2 argumetns
在这里
console.log( ( false, { i:0 }, 5 ) ); // here is only one argument.
在使用逗号运算符的bralas中。
comma operator总是返回最后一个表达式。
所以你可以像这样重写你的表达式:
var x = ( false, { i:0 }, 5 ); // x is 5 here
console.log( x );
答案 3 :(得分:1)
通过放置brakets,你只能为console.log创建一个参数。所以关注
console.log( false, 5 ); // here you are using log function with 2 argumetns
在这里
console.log( ( false, { i:0 }, 5 ) ); // here is only one argument.
在使用逗号运算符的bralas中。
comma operator总是返回最后一个表达式。
所以你可以像这样重写你的表达式:
var x = ( false, { i:0 }, 5 ); // x is 5 here
console.log( x );