我正在读一些书,学习javascript,我看到javascript使用词法范围。
词法范围是指您定义的范围内的任何变量 函数来自(而不是当你调用它时)在范围内 功能
我尝试了一些基本的例子:
function f() {
console.log(x);
}
const x = 10;
f(); // 10
那么这是如何工作的,为什么它会记录值10?定义函数时,变量x不存在。我是javascript noob,所以也许我在这里遗漏了一些东西。提前谢谢。
答案 0 :(得分:0)
这是由于一个名为Hoisting的概念。 从本质上讲,任何声明都会移到范围的顶部,因此始终可以在范围内的任何位置访问。
在定义函数id期间,词法作用域捕获对x的引用。
发布哪个x被分配10。
Read more about hoisting in JS here. (JavaScriptisSexy.com) More specifically about Hoisting and const here.