【发布时间】:2015-03-19 13:15:23
【问题描述】:
我正在阅读 JavaScript scopes 和 Hoisting。我看到下面的示例让我产生了一些疑问。所以,我想知道它是如何工作的。
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);
代码会提醒1!但是如果我们去掉 "function a(){}" 部分,代码会提示 10。
那么,它是如何工作的! “函数 a(){}”在这里做什么以及它如何影响范围。
我也看不懂这段代码中空“return;”的含义。
那么,这段代码如何依赖 JavaScript 作用域工作?
【问题讨论】:
-
阅读“吊装”。
-
这被称为“提升”,这是一篇解释它并使用该确切代码的文章! adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
-
是的。我读过关于吊装的书,但我仍然有疑问。基于提升函数声明和变量声明总是被 JavaScript 解释器不可见地移动(“提升”)到其包含范围的顶部。所以,我还是不明白它是如何影响这段代码的。
-
是的。我的疑问正是从您发送的链接中提出的!
-
@GrijeshChauhan 这个问题删除了第 5 行。链接的问题没有考虑这种变化。
标签: javascript