为什么JavaScript在if语句中接受逗号?
我偶然发现了一些JavaScript语法,它似乎应该会产生某种types的parsing错误,但是不会:
if (true, true) {console.log('splendid')} else {console.log('horrid')} // splendid if (true, false) {console.log('splendid')} else {console.log('horrid')} // horrid
似乎只有最后一个expression式影响逻辑,尽pipe所有expression式都被执行:
if (console.log('super'), true) {console.log('splendid')} // super splendid
任何人都知道为什么这是有效的JavaScript语法? 有没有实际的用途呢?
逗号运算符将多个expression式链接在一起,并且操作的结果是最后一个操作数的值。 唯一真正的用途是当你需要发生多种副作用时,例如赋值或函数调用。
逗号运算符评估每个操作数(从左到右)并返回最后一个操作数的值。
JavaScript中的逗号实际上非常神秘。 我见过的最酷的使用是这样的
while(doSomething(), checkIfSomethingHappened());
最常见的就是var在现代js中使用的方式
var foo = 1, bar = 2;
这也和大多数其他编程语言一样,在循环中可能有多个迭代器。
int x,y; for(x = 0, y = 0; x < 10 || y < 100; x++, y++) { .... }