gpt4 book ai didi

javascript - 在全局范围内预定义变量有什么优点?

转载 作者:行者123 更新时间:2023-11-30 05:47:52 26 4
gpt4 key购买 nike

我经常遇到一种情况,我会根据自己的心情行事:

情况A):

 function a() {
var msg = 'a()';
..operate on msg
}

function b() {
var msg = 'b()';
..operate on msg
}

情况 B):

var msg;
function a() {
msg = 'a()';
..operate on msg
}

function b() {
msg = 'b()';
..operate on msg
}

请注意,“对消息进行操作” 我指的不是函数,而是一堆操作。

我对此很感兴趣,因为 JSHint 指出变量已经预定义,尽管它们具有相同的名称但出现在不同的函数中。

更新:我问这个的时候可能是不正确的,所以为了澄清我已经改变了功能的情况。

更新 2我了解范围。我的意思是,除了范围之外,还有其他优势吗?

最佳答案

正如其他人所建议的,您必须阅读更多有关 Javascript 中的变量提升的信息。我将尝试演示它。

function test() {

var t1 = msg + " hello";
console.log(t1); // prints "undefined hello" because msg is undefined
var t2 = msgx + " hello"; // msgx ReferenceError

var a = 1;
var b = 2;
if (a > b) {
var msg = 'sample';
}

}

test();

在示例中,您可以看到声明了 msg。但它是未定义的。另一方面,msgx 会导致引用错误。它没有在任何地方声明。所以重点是语句 var msg = 'sample'; 后面的函数中 if 大括号使 msg 成为一个有效的变量功能。所以再次声明 msg 会给你预定义的变量警告。

在 javascript 中只有一个函数可以创建一个作用域。即使有其他控制语句的内括号,函数中声明的所有内容都将在整个函数范围内可用。所有在函数内不同行中声明的变量都将被提升并视为在函数的起始行中声明。

关于javascript - 在全局范围内预定义变量有什么优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16834887/

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