关于闭包--面试够用就行

101 阅读1分钟
//作用域及闭包
作用域:作用 =》 读写操作,函数可以读取代码,改写代码,“域”表示空间,范围,区域,作用域就是 读写作用的一个区域
作用域分为:全局作用域,函数作用域
特点:静态作用域是指函数的作用域在函数定义时就已经确定了,而动态作用域是指函数的作用域在运行时才确定
作用域链:当前作用域查找值,没找到再去上面查值的过程形成的一个链
JS的函数作用域,将作用域拆开来看,“作用”表示读写操作,函数可以读取代码,改写代码;“域”表示空间,范围,区域。一般指在
闭包的定义:闭包就是能够读取其他函数内部变量的函数
闭包:闭包是 JS 函数作用域的副产品,换句话说,正是由于 JS 的函数内部可以使用函数外部的变量,所以这段代码正好符合了闭包的定义。而不是 JS 故意要使用闭包。


关于闭包的谣言
闭包会造成内存泄露?

错。

说这话的人根本不知道什么是内存泄露。内存泄露是指你用不到(访问不到)的变量,依然占居着内存空间,不能被再次利用起来。

闭包里面的变量明明就是我们需要的变量(lives),凭什么说是内存泄露?

这个谣言是如何来的?

因为 IE。IE 有 bug,IE 在我们使用完闭包之后,依然回收不了闭包里面引用的变量。

这是 IE 的问题,不是闭包的问题