在javascript中理解词汇范围时遇到麻烦

时间:2017-01-11 09:36:57

标签: javascript scope lexical-scope

我正在读一些书,学习javascript,我看到javascript使用词法范围。

  

词法范围是指您定义的范围内的任何变量   函数来自(而不是当你调用它时)在范围内   功能

我尝试了一些基本的例子:

function f() {
  console.log(x);
}
const x = 10;
f(); // 10

那么这是如何工作的,为什么它会记录值10?定义函数时,变量x不存在。我是javascript noob,所以也许我在这里遗漏了一些东西。提前谢谢。

1 个答案:

答案 0 :(得分:0)

这是由于一个名为Hoisting的概念。 从本质上讲,任何声明都会移到范围的顶部,因此始终可以在范围内的任何位置访问。

在定义函数id期间,词法作用域捕获对x的引用。

发布哪个x被分配10。

Read more about hoisting in JS here. (JavaScriptisSexy.com) More specifically about Hoisting and const here.