简述一下JavaScript的闭包及其原理,优缺点有哪些?
JavaScript闭包
是由函数及其相关引用环境组成的值。它被构造而不会立即计算,而是在使用时才会计算。这使得它的作用域可以保存在函数外部,也就是说,它可以访问函数本身内部定义的变量。
优点:
-
大大提高了代码的可重用性:闭包可以提供一个永久的环境,因此可以方便的在模块之间共享变量。
-
它允许用户在运行时修改临时变量而不影响全局变量,从而避免污染全局命名空间:比如变量和函数名称可以重复使用,但是由于闭包的作用,它们不会相互干扰。
缺点:
-
资源浪费:根据闭包可能保留多个变量,花费更多的内存资源。
-
上下文切换:闭包中必须切换上下文才能执行,有可能导致闭包效率较低。