前端小知识点(6):听了好多闭包,这次可能最懂
目录
一、作用域和作用域链
二、闭包
三、无意间共享环境[可以通过闭包解决]
代码一
结果一
代码二
结果二
代码三
结果三
一、作用域和作用域链
当函数声明的时候,函数会通过内部属性[scope]来记录创建范围
二、闭包
什么是闭包:闭包是一个函数加上到创建函数的作用域的连接,闭包“关闭”了函数的自由变量。
第一句话(得到的理解):2个函数,2个函数作用域[scope]还要连接上;
第二句话(得到的理解):关闭函数的变量自由:它暂时不会销毁;
三、无意间共享环境[可以通过闭包解决]
代码一
var str = '123';function fn(){var str = '456';console.log( str );
}fn();
结果一
代码二
function fun(n){return function(m){n+=m;return n;} }//第一步
var f = fun(5);
//第二步console.log( f(1) );console.log( f(1) );console.log( f(1) );
结果二
代码三
var lis = document.getElementsByTagName('li');for(var i=0;i<lis.length;i++){(function(){var idx = i;lis[i].onclick = function(){console.log(idx);}})();}
结果三
前端小知识点(6):听了好多闭包,这次可能最懂相关推荐
- 前端小知识点(4):JS 运行机制和存储
目录 被忽视的内存管理 JS工作原理 JS代码如何运行 JavaScript内存的生命周期 栈内存.堆内存 代码案例 运行结果 被忽视的内存管理 JavaScript不像C.C++等语言--程序员必须 ...
- 前端小知识点(10):原型链
目录 原型链 : 代码1 运行结果1 代码二 运行结果2 原型链 : 每一个对象都有一个原型(__proto__),这个原型还可以拥有自己的原型,形成最终的原型链. 查找一个对象特定的属性或者方法,我 ...
- 前端小知识点(9):函数和对象之间的关系
目录 函数与对象之间的关系 代码演示 运行结果 函数与对象之间的关系 函数 有什么 : 函数也是对象 函数有:prototype 对象 有什么 对象:__proto__ 原型对象里面 ...
- 前端小知识点(8):作者为什么设计原型
目录 一.从古代说起 二.Brendan Eich的选择 三.new运算符的缺点 四.prototype属性的引入 五.总结 六代码部分 一.从古代说起 要理解Javascript的设计思想,必须从它 ...
- 前端小知识点(7):正则前瞻
目录 一.js中的正则表达式,只有前瞻没有后顾 正向前瞻:(?=) ===>匹配符合的 代码1 结果1 代码2 结果2 一.js中的正则表达式,只有前瞻没有后顾 ...
- 前端小知识点(3):JavaScript 单线程
目录 一.为什么 JavaScript 是单线程? 二.JavaScript是单线程,怎样执行异步的代码? 三.事件循环机制 四.代码1 五.结果1 六.代码2 七.结果2 一.为什么 JavaScr ...
- 前端小知识点(2):普通字符串和new String有什么区别
目录 一.其实不仅字符串 二.那么到底为什么? 三.代码案例 四.运行结果 一.其实不仅字符串 var str = 'abc'; typeof str ===> string //他不是对象,可 ...
- 前端小知识点(1):undefined和null区别
目录 一.奇怪点 二.历史原因 三.具体区别 四.代码演示 五.运行结果 一.奇怪点 有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null. ...
- 【转载】前端小知识点---html换行被解析为空格的相关知识
html换行被解析为空格也是常说的3像素空隙的问题,根据测试不同浏览器产生的空隙大小会不一样,Chrome,Firefox,IE8+都存在这样的问题,这个问题的原因相比大家都知道,浏览器把换行解析成了 ...
最新文章
- 修身论文2000字_那些没能写出毕业论文的博士生,究竟是败在了哪里?
- 完整iOS APP发布App Store上架流程
- _Linux安装软件方法总结
- 从前序与中序遍历序列构造二叉树—leetcode105
- 牛客小白9 换个角度思考(离线+树状数组)
- rails online api
- 洛谷P2851 [USACO06DEC]最少的硬币The Fewest Coins(完全背包+多重背包)
- 客户端级别的渲染分析工具 dynaTrace
- 【UOJ139】【UER #4】被删除的黑白树
- 新建项目虚拟环境及pycharm配置
- 181108每日一句
- 显卡对应的Compute Capability值
- C语言确定某年星期六,c语言 怎么算某年某月某日是星期几啊?
- LATEX插入参考文献(两种方法)
- 《因子投资 - 方法与实践》新书上市
- 【物联网】物联网项目之北向接口与南向接口
- 【2017级面向对象程序设计】第3、4次成绩及排名
- gfp 通用成帧程序 帧结构 校验 crc 多项式 加扰
- 常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
- skype 无法更新安装
热门文章
- mongdb 群集_群集文档的文本摘要
- leetcode51. N 皇后(回溯算法)
- leetcode面试题 08.08. 有重复字符串的排列组合(回溯)
- leetcode103. 二叉树的锯齿形层次遍历(bfs)
- react组件生命周期_React组件生命周期-挂钩/方法介绍
- react jest测试_如何使用Jest和react-testing-library测试Socket.io-client应用程序
- 引入 javascript_在您JavaScript项目中引入类型安全性? 再想一想
- 微软大数据_我对Microsoft的数据科学采访
- Dart编程语言入门
- 词频统计预处理之综合练习