我偶然发现了一些javascript语法,似乎应该会产生某种类型的解析错误但不会:
if (true, true) {console.log('splendid')} else {console.log('horrid')} // splendid
if (true, false) {console.log('splendid')} else {console.log('horrid')} // horrid
似乎只有最后一个表达式影响逻辑,尽管所有表达式都被执行:
if (console.log('super'), true) {console.log('splendid')} // super splendid
任何人都知道为什么这是有效的JavaScript语法?它有什么实际用途吗?
答案 0 :(得分:56)
逗号运算符将多个表达式链接在一起,操作的结果是最后一个操作数的值。唯一真正的用途是当您需要发生多种副作用时,例如赋值或函数调用。
答案 1 :(得分:33)
逗号运算符计算每个操作数(从左到右) 并返回最后一个操作数的值。
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Expressions_and_Operators#comma_operator
答案 2 :(得分:15)
while(doSomething(), checkIfSomethingHappened());
最常见的是在现代js中使用var的方式
var foo = 1,
bar = 2;
答案 3 :(得分:7)
这与大多数其他编程语言中的相同,在这些语言中,循环中可能有多个迭代器。
int x,y;
for(x = 0, y = 0; x < 10 || y < 100; x++, y++) {
....
}
答案 4 :(得分:0)
我允许在相同的上下文中进行操作和比较。
示例:
function submitMe() {
$("#submitBtn").trigger("click");
}
$(".upload-area").on('drop', function(e){
----
----
submitMe();
});