1. 闭包的概念
闭包就是能够读取其他函数内部变量的函数。但是在JS中,只有函数内部的子函数才能获取局部变量,所以闭包也可以理解成“定义在一个函数内部的函数”。
2. 使用闭包的原因
根据作用域链,我们知道父对象的所有变量,对于子对象都是可见的,反之不成立。
那么现在,我们外部想要获取函数内部的局部变量,该如何操作呢?
这时,为了获取函数内部的局部变量,我们需要使用闭包。具体方法:在函数内部定义函数,并将该函数作为返回值。
小总结:
目的:为了获取函数内部的局部变量;
方法:在函数内部定义函数,并将该函数作为返回值。
作用:延伸了变量的作用范围。
3. 闭包的缺点
(1)缺点1: 通常情况下,函数执行完后,函数里面定义的变量会被销毁。但是使用闭包后,会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能会导致内存泄漏。
(2)缺点2:★闭包会在父函数的外部,改变父函数内部变量的值(使用全局函数来改变局部变量的值)
闭包具有一定积极的意义,但是同时也存在一些比较致命的缺点,所以在实际开发中要慎重使用,避免出现不必要的问题。