【发布时间】:2018-04-11 09:31:11
【问题描述】:
function fn() {
console.log(foo);
}
const foo = 3;
run();
为什么函数内部的这个变量可以读取甚至在函数语句下声明和赋值的全局变量?
JavaScript 在这种情况下如何工作? 我想了解它是如何工作的。
fn();
function fn() {
console.log("hello");
}
我知道这确实是因为函数提升。但第一个代码是另一回事,对吧?
【问题讨论】:
-
第一个代码只是在
fn()实际运行之前设置了foo。是的,第二个是由于吊装。 -
@Rhumborl 那么,在 JavaScript 中,语句在表达式之后运行?
-
@shu 在 JavaScript 中,声明影响它们发生的整个范围,变量范围并不从声明开始。
标签: javascript node.js