你的位置:首页 > 软件开发 > Java > 深入理解闭包系列第四篇——常见的一个循环和闭包的错误详解

深入理解闭包系列第四篇——常见的一个循环和闭包的错误详解

发布时间:2016-08-03 15:00:06
×目录[1]犯错 [2]IIFE [3]let前面的话  关于常见的一个循环和闭包的错误,很多资料对此都有文字解释,但还是难以理解。本文将以执行环境图示的方式来对此进行更直观的解释,以及对此类需求进行推衍,得到更合适的解决办法 犯错function foo ...

深入理解闭包系列第四篇——常见的一个循环和闭包的错误详解

×
目录
[1]犯错 [2]IIFE [3]let

  执行流进入全局执行环境,继续执行第10行,将函数的返回值arr赋值给bar

深入理解闭包系列第四篇——常见的一个循环和闭包的错误详解

  执行流接着执行第5行,以i的值2作为返回值返回。同时销毁匿名函数的执行环境。执行流进入全局执行环境,接着执行第11行,调用内部对象console,并找到其方法log,将bar[0]()的值2作为参数放入该方法中,最终在控制台显示2

 

IIFE

  由此,可以利用IIFE传参和闭包来创建多个执行环境来保存循环时各个状态的索引值。因为函数传参是按值传递的,不同参数的函数被调用时,会创建不同的执行环境

function foo(){  var arr = [];  for(var i = 0; i < 2; i++){    arr[i] = (function fn(j){      return function test(){        return j;      }    })(i);  }  return arr;}var bar = foo();console.log(bar[0]());//0  

原标题:深入理解闭包系列第四篇——常见的一个循环和闭包的错误详解

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录