作用域链
作用域分为全局作用域和局部作用域,当声明了一个函数,函数内部就会形成一个局部作用域。 一个局部作用域肯定有上级作用域。当访问一个变量时,解释器会首先在当前作用域查找,如果没有找到,就去上级作用域找,直到找到该变量,不然一直找到全局作用域,这个叫做作用域链的查找机制。作用域中的函数都会含有上级的作用域,形成作用域链。
什么是闭包?
- 闭包是指有权访问另外一个函数作用域中的变量的函数.可以理解为(能够读取其他函数内部变量的函数)
- 格式:嵌套的函数,内部函数使用外部函数的变量,外部函数返回内部函数。
// 经典闭包
function fn () {
let x = 1;
return function add() {
return x;
}
}
var test = fn();
console.log(test()); // 2