闭包小案例
来源:互联网 发布:sst nc数据下载 编辑:程序博客网 时间:2024/05/16 04:20
闭包的小案例
闭包可以用在许多地方。它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。闭包的应用涉及作用域、函数的参数传递、变量提升等知识,当循环使用时,通过画图的方式可以更好的去理解。
以下的这段代码 n 只有1级引用
function fun(n, s) { //var n = 0 console.log('n='+n) //依次输出 0 1 2 console.log('s='+s) //依次输出 undefined 0 0 return { fun: function (m) { return fun(m, n); } }; } var a = fun(0); //传递参数的顺序对应关系为: //外层的fun(0)调用时把0传递给了外层的形参 => n = 0 s没有实参赋值=>undefined a.fun(1); // 内层的fun参数m为调用外层fun函数的第一个实参 对应=> n = m = 1; // 内层的fun函数调用外层fun函数时的 n是s的实参,当前作用域没有找到n, //找到上一次调用外层fun时只传入了一个实参0,所以n = 0 传递后的值为 s = n = 0 a.fun(2); // 内层的fun参数m为调用外层fun函数的第一个实参 对应=> n = m = 2; //找到上一级作用域中的 n = 0 传递后的值为 s = n = 0
以下的这段代码 n 有多级引用
function fun(n, s) { //第一次 n = '外部传入的实参',之后 n = 内部调用 m 传入的值 console.log('n='+n) //第一次 s = 'undefined',之后 s = 上一次内部调用fun环境下 n 的值 console.log('s='+s) return { fun: function (m) { return fun(m, n); } }; } var b = fun(0).fun(1).fun(2).fun(3);
以下的这段代码 n 存在2级引用
function fun(n, s) { //第一次 s = 'undefined',之后 s = 上一次内部调用fun环境下 n 的值, //n 的引用关系决定,如果上一次的 n 存在引用关系,会一直保存这个值给下一次使用, //每次单独调用的时候没有引用的关系 console.log('s='+s) return { fun: function (m) { return fun(m, n); } }; } var c = fun(0).fun(1);//输出0 c.fun(2);//输出1 c.fun(3); //输出1
阅读全文
0 0
- 闭包小案例
- 案例
- 案例
- 案例
- 案例
- 案例
- 案例
- 案例
- 案例
- 成功案例
- 案例学习
- Sales 案例
- 新东方案例
- Openlaszlo案例
- MDX案例
- MDX案例
- 案例分析
- 管理学案例
- Spark streaming不同数据来源(socket套接字、hdfs目录)和存储位置(hdfs、本地)的java代码
- Tomcat的性能与最大并发(1000)
- OSI七层模型和TCP/IP五层模型详讲
- Python str 与 bytes 类型(Python2/3 对 str 的处理)
- java 调用shell命令cp
- 闭包小案例
- Python+caffe实现
- VUWE——又一个移动端Vue2组件库
- 进程间通信IPC、LPC、RPC
- win7安装vm12
- Android and Architecture(安卓和架构)
- Jenkins持续化构建Android项目(二)-构建Android项目生成apk(by 星空武哥)
- 看书笔记摘抄:python记录log的例子
- Vue2.0开发购物车实例