Mat*_*att 62 javascript logic parsing
我偶然发现了一些javascript语法似乎应该产生某种类型的解析错误但不会:
if (true, true) {console.log('splendid')} else {console.log('horrid')} // splendid
if (true, false) {console.log('splendid')} else {console.log('horrid')} // horrid
Run Code Online (Sandbox Code Playgroud)
虽然所有表达式都被执行,但似乎只有最后一个表达式会影响逻辑:
if (console.log('super'), true) {console.log('splendid')} // super splendid
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么这是有效的JavaScript语法?它有什么实际用途吗?
Ign*_*ams 58
逗号运算符将多个表达式链接在一起,操作的结果是最后一个操作数的值.唯一真正的用途是当您需要发生多种副作用时,例如赋值或函数调用.
Mat*_*ggs 15
javascript中的逗号实际上非常神秘.我见过的最酷的用途就是这个
while(doSomething(), checkIfSomethingHappened());
Run Code Online (Sandbox Code Playgroud)
最常见的是var在现代js中的使用方式
var foo = 1,
bar = 2;
Run Code Online (Sandbox Code Playgroud)
这也与大多数其他编程语言中的相同,在这些语言中,循环中可能有多个迭代器.
int x,y;
for(x = 0, y = 0; x < 10 || y < 100; x++, y++) {
....
}
Run Code Online (Sandbox Code Playgroud)