gpt4 book ai didi

JavaScript 局部变量和全局变量混淆

转载 作者:行者123 更新时间:2023-12-01 15:47:56 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How do JavaScript closures work?

(86 个回答)



Variable: local scope, global scope or is it the JavaScript engine?

(3 个回答)


8年前关闭。




我是 JavaScript 的新手,我正在对局部和全局变量范围做一些练习。以下是我的代码( fiddle ):

var myname = "initial"
function c(){
alert(myname);
var myname = "changed";
alert(myname);
}
c();

当第一个警报被调用时,它显示 myname作为未定义。所以我的困惑是为什么我无法访问 myname 的全局实例如果我不定义 myname在函数中,它会正常工作。

最佳答案

在 JavaScript 中,变量声明会自动移动到函数的顶部。所以,解释器会让它看起来更像这样:

var myname = "initial"
function c(){
var myname;
// Alerts undefined
alert(myname);
myname = "changed";
// Alerts changed
alert(myname);
}
c();

这叫做 hoisting .
由于提升以及任何变量的作用域都是它在其中声明的函数这一事实,标准做法是在函数顶部列出所有变量以避免这种混淆。

关于JavaScript 局部变量和全局变量混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39050984/

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