gpt4 book ai didi

javascript - if 语句中的逗号

转载 作者:数据小太阳 更新时间:2023-10-29 04:38:44 25 4
gpt4 key购买 nike

我在一些 JavaScript 中遇到过一个相当令人困惑的语句:

if (n = "value", a==b) {...

我认为这是先给n赋值,然后比较(a==b)判断是否继续if声明。但为什么?这样做比说...有什么好处吗?

n = "value";
if (a==b) {...

或者...

if (a==b) {n = "value"; ...

最佳答案

在 JavaScript 中,无论何时将多个表达式放在一对括号内,它们都会被计算为最后一个表达式,如下例所示:

var a = (1, 2);
var b = a + 1; // b = 2 + 1 = 3

因此,在您的情况下,解释器执行属性 n = "value",然后解析 if 以 a == b 为条件。这与:

n = "value";
if (a == b) {
// ...
}

This article解释了这种行为。

编辑

但是,这不会将n 限制在if 的范围内。 for 循环中的 var 声明也会发生同样的事情:

for (var i = 0; i < 10; i++) {
// Do stuff...
}
console.log(i); // Logs 10

编辑 2

正如 Ethan Brown 所提到的,也很好地讲述了变量提升,这基本上是一个事实,在 JavaScript 中,可以在声明变量之前将值分配给变量。以下代码显示了此行为并摘自 this MDN article :

bla = 2
var bla;

// The above code is valid, since
// it's implicitly understood as:

var bla;
bla = 2;

函数也是如此:

foo();
function foo() {
console.log('bar');
}

关于javascript - if 语句中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com