作用域和闭包
作用域:函数的内部环境可以通过作用域链访问到所有的外部环境,但外部环境却不能访问到内部环境;
作用域的形成:在一个函数创建时形成的,而不是函数调用;
作用域向上查找是查找创建它的那个作用域
(闭包:函数在某个特殊情况下创建就会形成闭包,这个特殊情况就是,它使用了自己局部作用域以外的变量。)
在函数a内创建另一个函数b时,就相当于创建了一个闭包。内层函数b就是闭包。
通常情况下,为了让外部函数的内部变量可以访问,都会返回这个闭包。
function outerFunction(){
var name = 'kitty';
return innerFunction() {
console.log('hello,', name);
}
}
outerFunction()(); // hello,kitty