js:如何文艺地理解闭包
透彻的解释: A closure is a special kind of object that combines two things: a function, and the environment in which that function was created
之前的解释:一个func将它的innerFunc作为返回值,那么这个innerFunc被称之为闭包
两者都对,只是解释的角度不同和深度不同,前者更接近本质,而后者更接近形式
可以比较文艺地说:闭包是位爱国人士,无论他走到哪里,都不会忘记养育他的祖国大地
比如这样
var a=1;
var f1=function(){
var a=2;
return function(){
console.log(this);
console.log(this.a);
console.log(a);
}
}
f1()() // window 1 2
这时this指向的是window,自然this.a是1,但a却依然是2
也就是说
当这个内部匿名函数,外出游历,成为闭包
他并没有忘记家乡的一草一木(f1里的局部变量a)
一切都存在在他深深的脑海里
并且不为外人所知
转载于:https://www.cnblogs.com/AlexNull/p/4791480.html
js:如何文艺地理解闭包相关推荐
- JS面向对象--你真的理解闭包了吗?
JS中的闭包,可能在实际开发中我们用的很少,但是面试的时候是必问的. 所以今儿个总结一下什么是闭包. 首先,我们定义一个变量.会分为两种情况,1是定义在全局中,我们关闭程序的时候变量会从内存中释放.2 ...
- ES6之let(理解闭包)和const命令
ES6之let(理解闭包)和const命令 最近做项目的过程中,使用到了ES6,因为之前很少接触,所以使用起来还不够熟悉.因此购买了阮一峰老师的ES6标准入门,在此感谢阮一峰老师的著作. 我们知道,E ...
- js执行环境作用域和闭包_JavaScript中执行上下文,提升,作用域和闭包的终极指南
js执行环境作用域和闭包 It may seem surprising, but in my opinion the most important and fundamental concept to ...
- Js模块化开发的理解
Js模块化开发的理解 模块化是一个语言发展的必经之路,其能够帮助开发者拆分和组织代码,随着前端技术的发展,前端编写的代码量也越来越大,就需要对代码有很好的管理,而模块化能够帮助开发者解决命名冲突.管理 ...
- js回调函数的理解(轉)
js回调函数(callback)理解Mark!讲之前说一句function say(){alert(,,,,,,,,)}var say=function (){alert(,,,,,,,)}var s ...
- JavaScript——以简单的方式理解闭包
闭包,在一开始接触JavaScript的时候就听说过.首先明确一点,它理解起来确实不复杂,而且它也非常好用.那我们去理解闭包之前,要有什么基础呢?我个人认为最重要的便是作用域(lexical scop ...
- [转][Python小记] 通俗的理解闭包 闭包能帮我们做什么?
热身 首先给出闭包函数的必要条件: 闭包函数必须返回一个函数对象 闭包函数返回的那个函数必须引用外部变量(一般不能是全局变量),而返回的那个函数内部不一定要return 几个典型的闭包例子: # EN ...
- JS之经典for循环闭包问题解决方法
JS之经典for循环闭包问题解决方法 参考文章: (1)JS之经典for循环闭包问题解决方法 (2)https://www.cnblogs.com/zhumingyong/p/8994636.html ...
- 我我我我终于理解闭包了,哈哈哈哈(仰天长啸)(JavaScript闭包理解)
想要理解闭包.首先得了解JavaScript中的三个东西. 1,函数内部可以访问的范围. 就是说,函数内部能访问,自身内部以及自身外层的变量.(这个很好理解,大部分语言都是如此) 如: var a = ...
最新文章
- 如何快速清空 Linux 中的大文件
- 提高项目开发效率之--会议室墙的进度表
- 4G最快网速相当于30M宽带
- [转] 有什么郁闷的就看看这驴!
- Creating Your First Blockchain with Java. Part 1.
- 取两个日期相差几年_干货~44个最常用的日期和时间类函数组合
- 一建机电实务教材电子版_必背!一建《机电实务》高频考点,每日一背
- pytorch实现Dropout与正则化防止过拟合
- 5 高可靠,构建RabbitMQ集群架构
- 安卓开发由一个APP拉起另一个APP的方法总结
- 小心SAP环境中的8大安全错误!快来对照、改正!
- idea快捷键汇总mac_IntelliJ IDEA for MAC 快捷键设置汇总
- Threejs javascript 3D建模 框架
- 计算机网络在办公自动化的应用,浅析计算机网络在办公自动化中的作用
- 十代主板改win7_技嘉B460主板UEFI+GPT装win7|10代CPU装win7 Bios设置
- icloud显示账户详情不可用_iCloud提示账户详情不可用怎么办 iphone提示账户详情不可用的解决方法...
- VON矿链资本的技术含量内幕是什么?尊皇社区为你揭秘!
- 常用正则表达式,常用表单验证javascript代码(转)
- js 验证身份证号,根据身份证获取出生年月/性别
- Java——常用开发工具
热门文章
- html盒子标准模型,CSS——(二)盒子模型与标准流
- 视频号扩展链接助手小程序功能模块源码v1.5.0
- 如何防止WordPress博客内容被恶意复制的教程
- 发布一个免费漂亮的仿Outlook风格、支持换肤的通用界面框架
- 电脑引起“心理死亡”
- 一步步教你在Win2003下安装IIS组件
- SVG矢量绘图 path路径详解(贝塞尔曲线及平滑)
- 如何保持网站重建前已有的排名
- 制作HTML类型的email邮件 Background Images and CSS in HTML Email
- FCKeditor + smarty