资讯专栏INFORMATION COLUMN

深入理解闭包——到底什么才是闭包

tomorrowwu / 2082人阅读

摘要:古老定义闭包,是指函数变量可以保存在函数作用域内,因此看起来是函数将变量包裹了起来根据定义,包含变量的函数就是闭包定义一闭包是指可以访问其所在作用域的函数按照定义一的说法,需要通过作用域链在全局环境中查找变量的函数就是闭包定义二闭包是指有权

古老定义
闭包(closure),是指函数变量可以保存在函数作用域内,因此看起来是函数将变量“包裹”了起来
//根据定义,包含变量的函数就是闭包
function foo() {
    var n = 0;
}
cosole.log(n) // Uncaught ReferenceError: n is not defined
定义一
闭包是指可以访问其所在作用域的函数
//按照定义一的说法,需要通过作用域链在全局环境中查找变量的函数就是闭包
var n = 0;
function foo() {
    console.log(n); //0
}
foo();
定义二
闭包是指有权访问另一个函数作用域中的变量的函数
//根据定义二,访问上层函数的作用域的内层函数就是闭包
function foo() {
    var a = 2;
    function bar() {
        console.log(a);
    }
    bar();
}
foo();
定义三
闭包是指在函数声明时的作用域以外的地方被调用的函数
//通过将该函数作为返回值或者作为参数被传递
function foo() {
    var a = 2;
    function bar() {
        console.log(a); //2
    }
    return bar;
    
    /*函数的返回值可以简写为:
    return function {
        console.log(a) //2
    }
    */
}
foo()();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92671.html

相关文章

  • 到底什么闭包深入理解javascript闭包

    摘要:如何使用闭包所以这时候我们就要用闭包去解决这个问题了,先看代码。计数器为这时候的就形成了一个闭包。一个闭包由两部分组成,函数和创建该函数的环境。就是创建了一个匿名函数调用函数解除对匿名函数的引用,以便释放内存 古老定义 闭包(closure),是指函数变量可以保存在函数作用域内,因此看起来是函数将变量包裹了起来。 //根据定义,包含变量的函数就是闭包 function foo() { ...

    figofuture 评论0 收藏0
  • 你应该要知道的作用域和闭包

    摘要:写在前面对于一个前端开发者,应该没有不知道作用域的。欺骗词法作用域有两个机制可以欺骗词法作用域和。关于你不知道的的第一部分作用域和闭包已经结束了,但是,更新不会就此止住未完待续 这是《你不知道的JavaScript》的第一部分。 本系列持续更新中,Github 地址请查阅这里。 写在前面 对于一个前端开发者,应该没有不知道作用域的。它是一个既简单有复杂的概念,简单到每行代码都有它的影子...

    JouyPub 评论0 收藏0
  • JavaScript - 收藏集 - 掘金

    摘要:插件开发前端掘金作者原文地址译者插件是为应用添加全局功能的一种强大而且简单的方式。提供了与使用掌控异步前端掘金教你使用在行代码内优雅的实现文件分片断点续传。 Vue.js 插件开发 - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins译者:jeneser Vue.js插件是为应用添加全局功能的一种强大而且简单的方式。插....

    izhuhaodev 评论0 收藏0
  • 深入挖掘js之函数

    摘要:通过可取可取的他们所属对象的上下文的方法称为公共方法函数调用模式当一个函数并非一个对象的属性时,那么它就是被当做一个函数来调用的,以此模式调用函数,被绑定到了全局对象。 前言: 前端这两年的新技术铺天盖地,各种框架、工具层出不穷眼花缭乱。最近打算好好复习下 js 基础,夯实的基础才是学习新技术的基石。本文作为读书笔记简单的总结下 js 函数的基础知识。 一、函数对象 JavaScr...

    douzifly 评论0 收藏0
  • 请用一句优雅的话表达javascript闭包

    摘要:局部变量只在当前函数体内有效,出了函数体,就上一级的范围,局部变量无效。但是在中,函数内部有一个函数,它的函数体内的是指中声明的局部变量,而非全局变量。这就是一个非常典型的闭包了。 严格的讲,闭包常常表现为一个函数内部的函数,它使用了非自己定义的、自己所在作用域内的变量,并且使这些变量突破了作用域的限制。 函数内部的函数:私有函数 首先,我们从这个内部函数去说开,因为这个是形式上的,如...

    mochixuan 评论0 收藏0

发表评论

0条评论

tomorrowwu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<