逗号在 JavaScript 表达式中的作用是什么?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3561043/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
What does a comma do in JavaScript expressions?
提问by Topera
If I use:
如果我使用:
1.09 * 1; // returns "1.09"
But if I use:
但如果我使用:
1,09 * 1; // returns "9"
I know that 1,09 isn't a number.
我知道 1,09 不是数字。
What does the comma do in the last piece of code?
逗号在最后一段代码中的作用是什么?
More Examples
更多例子
if (0,9) alert("ok"); // alert
if (9,0) alert("ok"); // don't alert
alert(1); alert(2); alert(3); // 3 alerts
alert(1), alert(2), alert(3); // 3 alerts too
alert("2",
foo = function (param) {
alert(param)
},
foo('1')
)
foo('3'); // alerts 1, 2 and 3
回答by Yuval Adam
The comma operator evaluates both of its operands (from left to right) and returns the value of the second operand.
逗号运算符计算它的两个操作数(从左到右)并返回第二个操作数的值。
Source:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
来源:https : //developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
For example, the expression 1,2,3,4,5evaluates to 5. Obviously the comma operator is useful only for operations with side-effects.
例如,表达式的1,2,3,4,5计算结果为5。显然,逗号运算符仅对具有副作用的操作有用。
console.log(1,2,3,4,5);
console.log((1,2,3,4,5));
回答by Douglas
Some more to consider:
还有一些需要考虑:
console.log((0, 9));
console.log((9, 0));
console.log(("foo", "bar"));
回答by xgqfrms
The comma operator evaluates both of its operands (from left to right) and returns the value of thesecondoperand.
逗号运算符计算它的两个操作数(从左到右)并返回second操作数的值。
https://stackoverflow.com/a/3561056/5934465
https://stackoverflow.com/a/3561056/5934465
It should be like this!
应该是这样的!
The comma operator evaluates each of its operands (from left to right) and returns the value of the
lastoperand.
逗号运算符计算其每个操作数(从左到右)并返回
last操作数的值。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
回答by dhh
Have a look here- the comma stands for multiple expressions / statements. For example in your code you could use a line like this:
看看这里- 逗号代表多个表达式/语句。例如,在您的代码中,您可以使用这样的一行:
var a=0, b=0, c=0;
This would declare all three variables without writing:
这将在不写的情况下声明所有三个变量:
var a=0;
var b=0;
var c=0;
Hope that helps.
希望有帮助。
回答by CPHPython
Adding/modifying properties to an object and returning it in the same lineis a possible use-case:
向对象添加/修改属性并在同一行中返回它是一个可能的用例:
console.log(
((x) => (o = {biggerCond: r => r >= x},
o.r5 = Array.from(window.crypto.getRandomValues(new Uint16Array(5))),
o.isAnyBigger = o.r5.some(o.biggerCond),
o.bigger = o.isAnyBigger ? o.r5.filter(o.biggerCond) : [x], o )
)(5e4)
);
// Example
// {
// bigger: [58414, 56500, 63397],
// isAnyBigger: true,
// isBiggerCond: r => r >= x,
// r5: [58414, 12015, 56500, 63397, 43861]
// }
The above anonymous function returns an object with random values bigger than the input value or, if there's none, with the input value itself in an array in contained in the biggerproperty.
上面的匿名函数返回一个对象,其随机值大于输入值,或者如果没有,则输入值本身在包含在bigger属性中的数组中。
It is still syntactic sugar (like arrow functions), but it does shorten the number of lines... I wonder if some JS minifiers detect and adjust the code in a similar way automatically. Run it in your console:
它仍然是语法糖(如箭头函数),但它确实缩短了行数......我想知道一些 JS 压缩器是否会以类似的方式自动检测和调整代码。在您的控制台中运行它:
((x)=>(o={biggerCond:r=>r>=x},o.r5=Array.from(window.crypto.getRandomValues(new Uint16Array(5))),o.isAnyBigger=o.r5.some(o.biggerCond),o.bigger=o.isAnyBigger?o.r5.filter(o.biggerCond):[x],o))(5e4)

