手机
当前位置:查字典教程网 >编程开发 >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中push函数用法实例分析

JavaScript Base64编码和解码,实现URL参数传递。

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

Javascript 不能释放内存.

JavaScript中的函数嵌套使用

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

在JavaScript中使用JSON数据

Javascript 高阶函数使用介绍

JavaScript获得指定对象大小的方法

JavaScript通过Date-Mask将日期转换成字符串的方法

精品推荐
分类导航