# 执行上下文/作用域链/闭包

# 一、执行上下文

# 二、作用域链

在Javascript中,作用域分为全局作用域和函数作用域。

全局作用域:代码在程序的任何地方都能被访问,window对象的内置属性都拥有全局作用域。

函数作用域:在固定的代码片段才能被访问。

作用域链:一般情况下,变量取值到创建这个变量的函数的作用域中取值。但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链。

# 三、闭包

概念:能够访问另一个函数作用域的变量的函数。

闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

function testFn() {
  var localVar = 10;  // 局部变量
  function innerFn(innerParam) {
    alert(innerParam + localVar);
  }
  return innerFn;
}

var someFn = testFn();
someFn(20); // 30
1
2
3
4
5
6
7
8
9
10
Last Updated: 11/24/2020, 12:34:38 PM