Js闭包中变量理解
来源:互联网 发布:linux mint fcitx 编辑:程序博客网 时间:2024/06/18 06:41
先看一个例子
function fuc1() { var result = new Array(); for(var i = 0; i < 7; i++) { result[i] = function() { return i; }; } return result;}
执行上面代码:
for (var i = 0; i < 7; i++) { console.log(fuc1()[i]()); fuc1()[i]() = null;}
预想结果:是每个函数输出的结果一次是0-6;
实际结果:console.log()全是7;
这是因为在执行闭包函数的时候,每个闭包函数的作用域链中都保存着他的包含函数的活动对象,也就是for循环已经结束时的i值,结束的时候i = 7;
通过让闭包函数立即执行可以达到每个函数输出预想的结果。
function funRightnow() { var result = new Array(); for (var i = 0; i < 7; i++) { result[i] = function() { return i; }(); } return result;}for (var i = 0; i < 7; i++) { console.log(funRightnow()[i]); funRightnow()[i] = null;}
*最后对于闭包的执行环境:包含3个部分,闭包的活动变量,包含函数的活动变量,全局变量;
闭包的包含函数在执行完毕以后,闭包的包含函数的执行环境的作用域链会被销毁,但是执行环境中的变量,依然在内存当中;
被销毁的是执行环境的作用域链,而作用域链是指向变量的引用;*
0 0
- Js闭包中变量理解
- JS变量的深入理解
- 深入理解JS中的变量作用域
- 深入理解JS中的变量作用域
- JS全局变量与局部变量的理解
- 深入理解JS中的变量作用域
- 深入理解JS中的变量作用域
- 理解js的全局变量和局部变量
- 深入理解JS中的变量作用域
- js基础变量和引用变量的理解
- 深入理解js的变量提升和函数提升
- 深入理解js的变量提升和函数提升
- 深入理解js的变量提升和函数提升
- 理解变量
- JS 变量
- js 变量
- js变量
- JS变量
- 用linux命令wget下载jdk6
- leetcode 1
- iOS拍照之后图片自动旋转90度解决办法
- IEEE格式检查报错(字体未嵌入)的处理方法(for linux & mac)
- 解决Google浏览器和IE浏览器跨域的问题
- Js闭包中变量理解
- OpenCV一些知识记录
- 【寒江雪】Alpha通道混合技术
- 125. Valid Palindrome
- NYOJ-----16---矩阵嵌套DP
- 欢迎使用CSDN-markdown编辑器
- 分布式ID生成策略(1)_snowflake算法
- 欢迎使用CSDN-markdown编辑器
- Android中java和javascript方法的互相调用示例