黑马程序员技术交流社区

标题: js 匿名函数 [打印本页]

作者: 罗玉宁    时间: 2013-3-21 01:05
标题: js 匿名函数
本帖最后由 罗玉宁 于 2013-3-21 17:57 编辑

为什么输出的全是5 而不是12345?
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4.   <title>匿名函数</title>
  5.   <meta name="Generator" content="EditPlus">
  6.   <meta name="Author" content="">
  7.   <meta name="Keywords" content="">
  8.   <meta name="Description" content="">
  9. </head>
  10. <script type="text/javascript" >
  11. function box() {
  12.         var arr = [];
  13.         
  14.         for (var i = 0; i < 5; i ++) {
  15.                 arr[i] = function () {                                        //arr[0] = 0,arr[1] = 1 .... arr[4]  = 4
  16.                         return i;
  17.                 };
  18.         }
  19.         return arr;
  20. }
  21. var b = box();
  22. for (var i = 0; i < 5; i ++) {
  23.         alert(b[i]());
  24. }
  25. </script>
  26. <body>
  27.   
  28. </body>
  29. </html>
复制代码

作者: 陈腾跃_2013    时间: 2013-3-21 10:47
稍微改了下,可以满足要求,但是输出是从0-4,不会是1-5(1-5改下循环即可).如有错误,欢迎拍砖指正哈。
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3.     <head>
  4.         <title>匿名函数</title>
  5.         <meta name="Generator" content="EditPlus">
  6.         <meta name="Author" content="">
  7.         <meta name="Keywords" content="">
  8.         <meta name="Description" content="">
  9.     </head>
  10.     <script type="text/javascript">
  11.         
  12.         function box(){
  13.         
  14.             var arr = [];
  15.             var i = 0;
  16.             
  17.             for (var i = 0; i < 5; i++) {
  18.             
  19.                 arr[i] = function(i){
  20.                                         return i;
  21.                                 }(i);   //需要传入值才能返回
  22.                
  23.             }
  24.             
  25.             return arr;
  26.             
  27.         }
  28.         
  29.         var b = [];
  30.                 b = box();
  31.         
  32.         for (var i = 0; i < 5; i++) {
  33.         
  34.             alert(b[i]);  //输出数组的值而不是数组本身
  35.             
  36.         }
  37.     </script>
  38.     <body>
  39.     </body>
  40. </html>
复制代码

作者: 陈丽莉    时间: 2013-3-21 15:46
记得及时处理帖子哦,继续追问,或将分类改成【已解决】~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2