作用域

16 阅读1分钟

作用域

无论函数在哪里被调用,也无论它如何被调用,它的词法作用域都只由函数被声明时所处 的位置决定。

定义

作用域是一套规则,用于确定在何处以及如何查找变量(标识符)。

声明提升

foo(); // 1
var foo;
function foo() {
  console.log(1);
}
foo = function () {
  console.log(2);
};

上面会被引擎理解为

function foo() {
  console.log(1);
}
foo(); // 1
foo = function () {
  console.log(2);
};

闭包

函数在定义时的词法作用域以外的地方被调用,其实是为了弥补静态作用域处理作用域被销毁后作用域里面变量被引用的问题。

扩展

JavaScript的静态作用域链与"动态"闭包链