什么是闭包?
概念:闭包是能够用读取其他函数内部变量的函数
本质:闭包就是将函数内部和函数外部链接起来的一座桥梁
闭包是如何产生的?
当前作用域产产生了对父作用域的引用
Js代码的整个执行过程,分为两个阶段,代码编译阶段与代码执行阶段。编译阶段由编译器完成,将代码翻译成可执行代码,这个阶段作用域规则会确定。执行阶段由引擎完成,主要任务是执行可执行代码,执行上下文在这个阶段创建。
闭包的特性?
- 函数里面嵌套函数
- 背部函数可以引用外层函数的参数和变量
- 参数和变量不会呗垃圾回收机制回收
闭包的作用?
- 读取函数内部的变量值;让这些变量始终保存着(在内存中)
- 闭包慎用,由于函数内部的变量都被保存在内存中,会导致内存消耗大
function A() {
var a = 1
function B() {
var b =2
console.log(a+b);
}
return B
}
A()()