JavaScript中的闭包讲解

    技术2022-08-11  97

    前言

    函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起构成闭包(closure)。也就是说,闭包可以让你从内部函数访问外部函数作用域。在 JavaScript 中,每当函数被创建,就会在函数生成时生成闭包。 ----------------------------↑ 以上均为官方解释

    人话解释

    闭包就是一个函数 return 返回了一个函数 且 return返回的函数里面 使用了父函数里面的变量 具体看下方代码块 function foo(){ var count = 0; return function(){ console.log(++count); } } var res = foo(); res();

    此时上方代码就是生成了一个闭包, 闭包产生的的原因和预编译有关

    当一个函数被创建到结束的时候 AO的销毁判断就是里面的变量在未来或者现在 是否正在被使用 如果 变量正在被使用然后 AO对象被销毁 会发生不可预估的情况 所以 AO对象在产生闭包的时候 并不会被销毁.

    闭包的好处

    形成闭包的函数 会长期保留在内存里面 ,并且这个函数还是私有的变量 并不会污染全局的变量 闭包开发的时候用的很少 但是 用到的时候 几乎都是不可被别的方式替代的

    闭包的缺点

    最重要的一点 : 内存泄漏 如果在你的js代码中大量的使用了闭包 不可避免的就可能发生内存泄漏的问题

    内存一般来说都会存储 变量 函数 数组 等数据类型 一旦泄漏会导致数据丢失

    所以说请能在不影响需求的情况下尽量不去用 闭包,不要在不需要的时候随意生成闭包 ;

    Processed: 0.017, SQL: 9