gpt4 book ai didi

Javascript 作用域混淆

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:13 26 4
gpt4 key购买 nike

虽然确实存在许多 javascript 范围问题,但我找不到与我的问题完全匹配的问题。这是我当前的问题代码。

var my_var = "blank";
var MyFunc = function() {
my_var = "one";
//var my_var = "two";
}
alert(my_var);
MyFunc();
alert(my_var);

当我运行它时,我收到了 "blank" 警告,然后是预期的 "one"。但是,如果我取消注释那一行,那么它看起来像这样。

var my_var = "blank";
var MyFunc = function() {
my_var = "one";
var my_var = "two";
}
alert(my_var);
MyFunc();
alert(my_var);

我收到“空白”“空白” 的提醒。这不是我所期望的,我发现添加一行将删除行为令人困惑。谁能解释这里发生了什么?我在 firefox 和 safari 中都看到了这种行为。

最佳答案

所有 var 语句都有效地“提升”到它们封闭函数的顶部(某种程度上)。因此,您在该函数中有 var my_var anywhere 这一事实意味着所有提及“my_var”的地方都指的是局部变量。

(我说“有点”是因为 var 语句的赋值部分没有移位;只是标识符应该是局部变量的声明。)

关于Javascript 作用域混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637256/

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