js使用立即调用的函数表达式创建局部作用域问题
来源:互联网 发布:java工程师年龄要求 编辑:程序博客网 时间:2024/06/07 18:33
废话不多说,直接上代码
function wrapElemenets(a){ var result = [],i,n; for(i = 0,n = a.length;i < n;i ++){ result[i] = function(){ return a[i]; } } } return result; } var wrapped = wrapElemenets([10,20,30,40,50]); var f = wrapped[0]; f();
原以为很简单的输出10,没想到的是这里涉及到的关于js变量作用域和闭包问题,水平有限,直接上讲解。
wrapElements函数绑定了三个局部变量,当他调用时,函数会为三个变量分配内存空间,在循环的每次迭代中,循环体都会为嵌套函数分配一个闭包,该函数中始终存储着i 的引用地址,每次函数创建后i的值都会改变,因此内部最终得到的是i的最后的值。
function wrapElemenets(a){var result = [],i,n;for(i = 0,n = a.length;i < n;i ++){(function(){var j = i;result[i] = function(){return a[j];}})()}return result;}var wrapped = wrapElemenets([10,20,30,40,50]);var f = wrapped[0];f();
0 0
- js使用立即调用的函数表达式创建局部作用域问题
- 立即调用的函数表达式
- 立即调用的函数表达式
- 立即调用的函数表达式
- 深入理解:立即调用的函数表达式
- 1、立即调用的函数表达式:
- JavaScript中”立即调用的函数表达式“
- 立即调用的函数表达式(function(){...})()
- 立即调用的函数表达式(IIFE)
- javascript立即调用函数表达式
- Javascript-立即调用函数表达式
- 自动执行函数/立即调用的函数表达式
- 深入理解Javascript: 立即调用的函数表达式
- 深入JavaScript(4)立即调用的函数表达式
- 深入了解javascript--立即调用的函数表达式
- JS 立即执行的函数表达式(function)写法
- JS 立即执行的函数表达式(function)写法
- JS 立即执行的函数表达式(function)写法
- ubuntu14.04搭建hadoop集群
- SVM入门学习总结
- dedecms织梦TAG标签显示每个标签共有多少篇文章的方法
- hdoj5363Key Set(快速幂+同余定理)
- PHP file_put_contents&file_get_contents的使用
- js使用立即调用的函数表达式创建局部作用域问题
- dedecms织梦TAG标签显示每个标签共有多少篇文章的方法
- Mac显示或不显示隐藏文件操作命令
- android仿腾讯小火箭案例
- LeetCode#19 Remove Nth Node From End of List
- android面试专题(6)
- POJ 3641 Pseudoprime numbers(费马小定理,快速幂,数论)
- 使用SurfaceBiew录制视频
- 【打CF,学算法——三星级】CodeForces 701C They Are Everywhere