【发布时间】:2013-07-24 18:40:08
【问题描述】:
我一直在浏览 Javascript 函数范围并遇到了这个问题:
var scope = "global";
function f(){
console.log(scope);
var scope = "local";
console.log(scope);
}
f();
现在我知道第一个日志的输出是“未定义的”,因为 js 如何在函数顶部提升变量。但是当我从 "var scope = "local";" 中删除 var第一个日志输出“全局”,这让我摸不着头脑。有人可以解释为什么会这样吗?我的意思是js不是顺序运行代码吗?那么移除 VAR 对第一个日志有何影响?
【问题讨论】:
-
您的 var 语句使“范围”本地化,隐藏全局。一旦你定义了它,它就会在本地变成你设置的字符串。由于 var 提升,您的函数在内部作为 function f(){ var scope; 运行...
-
吊装吊装吊装...我会尽量找一个重复的问题给你指点。
标签: javascript scoping