手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
摘要:复制代码代码如下:functioncreateArray(){vararr=newArray();for(vari=0;i

复制代码 代码如下:

<script type="text/javascript">

function createArray() {

var arr = new Array();

for (var i = 0; i < 10; i++) {

arr[i] = function () {

return i;

}

}

return arr;

}

var funcs = createArray();

for (var i = 0; i < funcs.length; i++) {

document.write(funcs[i]() + "<br />");

}

//以上输出全部是i的最后一次的值(10),即会输出10个10,显然这不是我们想要的

//原因:因为每个函数都保存了createArray函数的活动对象,所以他们引用的都是同一个i(按引用传的值)

//解决方案:把按引用传参修改为按值传参

function createArray() {

var arr = new Array();

for (var i = 0; i < 10; i++) {

arr[i] = function (num) {

return function () {

return num;

}

} (i);//调用此匿名函数返回内部匿名函数,这里多了一步按值传递参数

}

return arr;

}

var funcs = createArray();

for (var i = 0; i < funcs.length; i++) {

alert(funcs[i]() + "<br />");

}

//以上输出的为理想结果

</script>

【JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题】相关文章:

javaScript中slice函数用法实例分析

JavaScript代码因逗号不规范导致IE不兼容的问题

JavaScript获取当前运行脚本文件所在目录的方法

JavaScript判断数组是否包含指定元素的方法

JavaScript数据结构与算法之栈与队列

javascript中动态函数用法

JavaScript中isPrototypeOf函数作用和使用实例

JavaScript中eval函数的问题

JavaScript实现斗地主游戏的思路

Javascript监视变量变化的方法

精品推荐
分类导航