闭包的意思
闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁
。
什么是闭包
)简单讲,闭包就是指有权访问另一个函数作用域中的变量的函数。
MDN 上面这么说:闭包是一种特殊的对象。
它由两部分构成:函数,以及创建该函数的环境。
环境由闭包创建时在作用域中的任何局部变量组成
。这种官方的概念是比较难理解的,在面试的时候说出来也不是很专业,因
为没办法有个具体的逻辑。我个人认为,理解闭包的关键在于
:外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访
问外部函数的变量对象,这就是闭包的重要概念。
function fun() {
var a = 'aaa'
return function () {
var c = 'ccc'
console.log(c)
console.log(a)
}
}
(function () {
var a = 'aaa'
return function () {
var cc = 'cc'
console.log(aa)
}
}())
存储
分为栈和堆
只要声明一个变量就会在栈中占一个内存
引用数据类型:数据类型会存储到堆中,同事提供一个地址
变量的存储
分为深拷贝与浅拷贝
深拷贝:拷贝的时候数据
js中基本数据类型,都是深拷贝,因为基本数据类型都存在【栈中】
浅拷贝:拷贝的是指针
引用类型数据都是浅拷贝 因为引用类型数据都存在【堆中】