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

发布于 2024-10-22 18:50:33 字数 432 浏览 1 评论 0原文

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

I stumbled across some javascript syntax that seemed like it should produce a parse error of some kind but doesn't:

if (true, true) {console.log('splendid')} else {console.log('horrid')} // splendid
if (true, false) {console.log('splendid')} else {console.log('horrid')} // horrid

It seems only the last expression affects the logic, though all expressions are executed:

if  (console.log('super'), true) {console.log('splendid')} // super splendid

Anyone know why that is valid javascript syntax? Is there any practical use for it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

一念一轮回 2024-10-29 18:50:33

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

The comma operator chains multiple expressions together, and the result of the operation is the value of the last operand. The only real use for it is when you need multiple side effects to occur, such as assignment or function calls.

沉默的熊 2024-10-29 18:50:33

JavaScript 中的逗号实际上非常晦涩难懂。我见过的最酷的用法是,

while(doSomething(), checkIfSomethingHappened());

最常见的是现代 js 中使用 var 的方式

var foo = 1,
    bar = 2;

commas in javascript are actually pretty arcane. The coolest use I have seen is this

while(doSomething(), checkIfSomethingHappened());

the most common would be the way var is used in modern js

var foo = 1,
    bar = 2;
不气馁 2024-10-29 18:50:33

这也与大多数其他编程语言相同,在这些编程语言中,循环中可能有多个迭代器。

int x,y;
for(x = 0, y = 0; x < 10 || y < 100; x++, y++) {
....
}

This is also the same as in most other programming languages where you might have multiple iterators in a loop.

int x,y;
for(x = 0, y = 0; x < 10 || y < 100; x++, y++) {
....
}
浪荡不羁 2024-10-29 18:50:33

我允许在相同的上下文中进行运算和比较。

例子:

if(a = 2, a > 1) console.log('a is', a)

I permits to do operations and comparisons in the same context.

Example:

if(a = 2, a > 1) console.log('a is', a)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文