黑马程序员技术交流社区
标题:
js 匿名函数
[打印本页]
作者:
罗玉宁
时间:
2013-3-21 01:05
标题:
js 匿名函数
本帖最后由 罗玉宁 于 2013-3-21 17:57 编辑
为什么输出的全是5 而不是12345?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>匿名函数</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<script type="text/javascript" >
function box() {
var arr = [];
for (var i = 0; i < 5; i ++) {
arr[i] = function () { //arr[0] = 0,arr[1] = 1 .... arr[4] = 4
return i;
};
}
return arr;
}
var b = box();
for (var i = 0; i < 5; i ++) {
alert(b[i]());
}
</script>
<body>
</body>
</html>
复制代码
作者:
陈腾跃_2013
时间:
2013-3-21 10:47
稍微改了下,可以满足要求,但是输出是从0-4,不会是1-5(1-5改下循环即可).如有错误,欢迎拍砖指正哈。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>匿名函数</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<script type="text/javascript">
function box(){
var arr = [];
var i = 0;
for (var i = 0; i < 5; i++) {
arr[i] = function(i){
return i;
}(i); //需要传入值才能返回
}
return arr;
}
var b = [];
b = box();
for (var i = 0; i < 5; i++) {
alert(b[i]); //输出数组的值而不是数组本身
}
</script>
<body>
</body>
</html>
复制代码
作者:
陈丽莉
时间:
2013-3-21 15:46
记得及时处理帖子哦,继续追问,或将分类改成【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2