博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解闭包——到底什么才是闭包
阅读量:6407 次
发布时间:2019-06-23

本文共 666 字,大约阅读时间需要 2 分钟。

古老定义

闭包(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()();

转载地址:http://bfhea.baihongyu.com/

你可能感兴趣的文章
Flutter 云音乐
查看>>
RecyclerView实现多type页面
查看>>
个人的web商城网站
查看>>
debian fcitx
查看>>
排中律与实无穷问题的性质分析
查看>>
08/23 学习总结
查看>>
物理层
查看>>
linux多网卡路由设置
查看>>
八大监听器
查看>>
self.navigationController退出到指定页面,或者一次性pop出n个页面
查看>>
Quartz实现数据库动态配置定时任务
查看>>
iptables 端口转发以及双向通信
查看>>
备战一线互联网公司Java工程师面试题 (1)
查看>>
jquery图片切换插件jquery.cycle.js参数详解
查看>>
JavaScript push() 方法
查看>>
Map集合
查看>>
JSP基础语法1
查看>>
elasticsearch Java API 之GET API & DELETE API
查看>>
《深入理解Java虚拟机》——GC基础概念
查看>>
微信小程序联盟:官方文档+精品教程+demo集合(5月31日更新,持续更新中……)...
查看>>