美文网首页
到底什么是闭包

到底什么是闭包

作者: 风雅欢乐 | 来源:发表于2020-04-29 19:37 被阅读0次

一个函数,不论通过什么手段将它传递到它所在的词法作用域之外,它都会持有对原始定义作用域的引用,这个引用就是闭包, 无论在其他什么地方执行这个函数,都会观察到闭包。

名词解释:
词法作用域--书写代码时,根据函数书写位置确定的作用域。

下面举个例子

function outerFunc() {
    // 此处定义的变量,处在innerFunc的词法作用域内
    // innerFunc引用了在outerFunc中定义的变量a
    var a = 10;
    return function innerFunc() {
        console.log(a);
    }
}

// 调用了outerFunc函数,将innerFunc函数保存到了变量中
var rst = outerFunc();
// 此时,理论上函数outerFunc调用结束后,会立即销毁它的作用域
// 但是由于rst变量的地址仍旧指向innerFunc,而innerFunc里还用到了变量a
// 导致outerFunc执行完毕后,无法销毁它的作用域,该作用域内的变量a也无法通过其他方式再次访问

相关文章

  • 到底什么是闭包

    一个函数,不论通过什么手段将它传递到它所在的词法作用域之外,它都会持有对原始定义作用域的引用,这个引用就是闭包, ...

  • 一周一章前端书·第5周:《你不知道的JavaScript(上)》

    第5章:作用域闭包 到底什么是闭包 本章讲解闭包(Closures),它与作用域工作原理息息相关。 首先我用自己总...

  • 初识闭包

    闭包,JavaScript语言一个很重要的点,可以说js库和各个框架百分百会用到闭包。那到底什么是闭包?闭包用来做...

  • JS闭包入门

    最近有看到朋友的面经里提到的JS闭包的问题,就想研究研究,以下是我对JS闭包的简单理解。 到底什么是JS闭包? 定...

  • 面试官问我:什么是JavaScript闭包,我该如何回答?

    闭包,有人说它是一种设计理念,有人说所有的函数都是闭包。到底什么是闭包?这个问题在面试是时候经常都会被问,很多小白...

  • javascript之理解闭包

    js之闭包 1、到底什么是闭包 闭包已经成为近乎神话的概念,它非常重要又难以掌握,而且还难以定义。 1.1 古老的...

  • Swift5 闭包及其应用

    关于如何理解闭包 学习闭包的第一个难点就是理解闭包,可能很多人用了很久的闭包都还不太清楚闭包到底是什么,我这里提供...

  • 通过一个简单例子理解JavaScript闭包和this对象

    在JavaScript里,只要有函数,就有闭包。可以说,闭包无处不在。但是,如果提问,“闭包到底是什么”?大多数时...

  • 前端常见问题总结

    什么是闭包?闭包的用途是什么?闭包的缺点是什么? 什么是闭包 闭包:内部函数总是可以访问其所在的外部函数中声明的参...

  • python函数部分

    什么是闭包,闭包的常用用法,怎样判断是不是闭包,闭包的作用是 1、什么是闭包 2、常用用法 3、判断是不是闭包 4...

网友评论

      本文标题:到底什么是闭包

      本文链接:https://www.haomeiwen.com/subject/xognwhtx.html