gpt4 book ai didi

javascript - ..if 语句中未声明的变量不会引发错误

转载 作者:行者123 更新时间:2023-11-30 08:21:26 25 4
gpt4 key购买 nike

我刚刚注意到 Javascript 中的一些奇怪行为。为了编写简短的代码,我想到了以下函数:

if(a = 'A|B|C'.split('|'), a.length > 1){
// I have access to a, but it was never declared as a variable?
} else {
// some code
}

// I still have access to 'a' over here?

我预计代码会抛出一些关于未声明 a 的错误,但显然,它分配了 'A|B|C'.split('|') ,并使用逗号,我可以将 a 用作普通声明的变量。

此外,该变量存在于 if 语句之外,我可以在下面的代码中访问它。

另一件事,显式设置变量:

if(let a = 'A|B|C'.split('|'), a.length > 1)

抛出一个错误。这不同于 for, for ..in 循环,您必须在使用变量之前声明变量。

谁能解释一下这是怎么回事?

最佳答案

事实上 a 被声明为一个全局变量,当你只是给它赋值的时候。它将系统地声明为全局 window 对象的一部分。

如果你看一下 the MDN var reference 你可以看到:

Assigning a value to an undeclared variable implicitly creates it as a global variable (it becomes a property of the global object) when the assignment is executed.

这就是为什么您共享的代码可以完美运行,并且不会引发任何错误。

关于javascript - ..if 语句中未声明的变量不会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52987734/

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