为什么javascript在if语句中接受逗号?

时间:2011-03-18 04:13:44

标签: javascript parsing logic

我偶然发现了一些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语法?它有什么实际用途吗?

5 个答案:

答案 0 :(得分:56)

逗号运算符将多个表达式链接在一起,操作的结果是最后一个操作数的值。唯一真正的用途是当您需要发生多种副作用时,例如赋值或函数调用。

答案 1 :(得分:33)

答案 2 :(得分:15)

javascript中的逗号实际上非常神秘。我见过的最酷的用途就是这个

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(); 

});