js闭包理解与使用场景
要理解闭包首先要知道什么是函数的作用域链
因为有函数的作用域链存在,所以函数无论在哪里调用,函数都可以使用函数外部作用域的变量。
当一个函数被调用时,会创建一个执行环境及相应的作用域链。然后使用arguments和其他命名参数的值来初始化函数的活动对象。此活动对象在当前函数作用域链的第一位,外部函数的活动对象在作用域链的第二位,外部函数的外部函数的活动对象在第三位,直至作为作用域链终点的全局执行环境。
闭包的作用:
实现一个作用域,达到封装的目的,这样做的好处是隐藏私有变量,防止污染全局变量;
还可以实现缓存功能
        案例1:隐藏私有变量
         function pack() {
             var index;
             return function () {
                 return index++;
             };
         }
         var p = pack();
         p();
         案例2:缓存
         function createFab(n) {
             var _cache = {};
             return function (n) {
                 var result = 0;
                 if (_cache[n]) {
                     return _cache[n];
                 }
                 if (n === 1 || n === 2) {
                     result = 1;
                 }
                 else {
                     result = fab(n - 1) + fab(n - 2);
                 }
                 _cache[n] = result;
                 return result;
             }
         }
         var fab = createFab();
         console.info(fab(6));
         console.info(fab(6));
js闭包理解与使用场景的更多相关文章
- js闭包理解实例小结
		Js闭包 闭包前要了解的知识 1. 函数作用域 (1).Js语言特殊之处在于函数内部可以直接读取全局变量 <script type="text/javascript"> ... 
- js闭包理解
		js闭包的作用是使函数外可以访问函数内部的变量,是通过 在函数内部 定义 访问函数内变量 的函数实现的,内部的一个函数产生一个闭包 function a() { var i=0; return fun ... 
- 理解js闭包9大使用场景
		1.返回值(最常用) //1.返回值 最常用的 function fn(){ var name="hello"; return function(){ return name; } ... 
- javascript之闭包理解以及应用场景
		半个月没写博文了,最近一直在弄小程序,感觉也没啥好写的. 之前读了js权威指南,也写了篇博文,但是实话实说当初看闭包确实还是一头雾水.现在时隔一个多月(当然这一段时间还是一直有在看闭包的相关知识)理解 ... 
- js闭包理解案例-解决for循环为元素注册事件的问题
		转发自http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html 一.变量的作用域 要理解闭包,首 ... 
- JS闭包理解_摘
		原文地址1:http://www.cnblogs.com/mzwr1982/archive/2012/05/20/2509295.html 闭包是一个比较抽象的概念,尤其是对js新手来说.书上的解释实 ... 
- JS闭包,以及适用场景
		闭包的定义 不用解释了,网上到处都是.简单的说:一个定义在函数内部的函数与包含它的外部函数构成了闭包,内部函数可以访问外部函数的变量,这些变量将一直保存在内存中,直到无法再引用这个内部函数 举个例子: ... 
- js 闭包 理解 copy
		闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于Javascript初学者应该是很有用的. 一.变量的作用域 要理解 ... 
- js 闭包 理解
		1.什么是闭包 定义:是指有权访问另一个函数作用域中的变量的函数 创建闭包:在一个函数内部创建另一个函数 基本特点 在返回的匿名函数中 可以调用外部函数的变量 如下例中所示 内部函数(匿名函数) 可以 ... 
随机推荐
- 关于App收集个人信息基本规范,这里公开征求你的意见!
			关于App收集个人信息基本规范,这里公开征求你的意见! https://www.thepaper.cn/newsDetail_forward_4122573 以后国家开始规范App收集个信息基本规范, ... 
- windbg排查线上线程数爆炸问题
			1.早上发现有个job的线程数一直居高不下 2.于是dump一个文件拉到本地,查到都在执行 StartInner方法 3.查询代码,此方法是个静态类开启线程的地方,理论上没有任何问题 4.思索了半天, ... 
- 网络基础-------------给电脑设置IP
			ip 是每一台电脑进入互联网的一个必备钥匙,没有它就不能体会冲浪的乐趣,当我们使用电脑连接无线时我们就会被自动分配一个ip地址(DHCP),这样我们就可以凭借这个IPV4地址来进行冲浪了,但是自动分配 ... 
- 一次性删除master数据库中的所有用户添加的表
			执行查询命令 use master; go sp_msforeachtable @command1="drop table ?" go 
- navicat2059错误的解决
			1.输入mysql -uroot -p登陆mysql 2.登录成功以后使用ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD ... 
- Vue开发日志
			一 搭建环境 mac 安装node brew install node 安装vue 全家桶 npm install -g vue-cli 选择一个目录做初始化 vue init webpack myp ... 
- 【知识点】SPU&SKU
			SPU:标准化产品单元 SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性. ... 
- 详解Vue中的虚拟DOM
			摘要: 什么是虚拟DOM? 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 Vue.js 2.0引入Virtual DOM,比Vue.js 1.0的初始渲染速度提升了2-4倍,并 ... 
- CTF-代码审计(1)——parse_str()变量覆盖
			题目连接:http://222.18.158.226:7000/iscc.php 考点:parse_str()变量覆盖 代码: PHP知识点: 1.parse_url() 参照网址:https://w ... 
- testNG结果入库
			一.使用IReporter接口 https://blog.csdn.net/oqqJohn1234567890/article/details/80900511 此文章中将结果数据打印成文本. 
