点击按钮后弹出相应的颜色值

点击按钮后弹出相应的颜色值

一、总结

1、都是立即执行的匿名函数:()()

二、点击按钮后弹出相应的颜色值

练习2:

  • 实例描述:

    点击按钮后弹出相应的颜色值

  • 案例要点:

    通过这个例子加深对循环语句中匿名函数的理解。

三、代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>练习02</title>
 6     <style type="text/css">
 7         div{
 8             width: 150px;
 9             height: 150px;
10             font-size: 28px;
11             display: inline-block;
12         } 
13         #green{background:green;}
14         #blue{background:blue;}
15         #red{background:red;}
16         #orange{background:orange;}
17     </style>
18 </head>
19 <body onload="test4();"> 
20     <div id="green">green</div>
21     <div id="blue">blue</div>
22     <div id="red">red</div>
23     <div id="orange">orange</div>
24 </div> 
25 <script type="text/javascript"> 
26     function test1() {  //1、这样的方式得不到效果,匿名函数里面的循环变量都是在i循环完的4
27         var colorArr=['green','blue','red','orange']
28         var divArr= document.getElementsByTagName("div"); 
29             for( var i=0; i<4; i++ ) { 
30                 divArr[i].onclick = function() { 
31                 alert(colorArr[i-1]); 
32             } 
33         } 
34     } 
35 //加一层闭包,i 以函数参数形式传递给内层函数 
36     function test2() { 
37         var colorArr=['green','blue','red','orange']
38         var divArr= document.getElementsByTagName("div"); 
39             for( var i=0; i<4; i++ ) { 
40                 (function(i){divArr[i].onclick=function(){
41                         alert(colorArr[i]);
42                     }
43                 })(i) 
44 
45             } 
46         }  
47 //加一层闭包,i 以局部变量形式传递给内层函数 
48     function test3() { 
49         var colorArr=['green','blue','red','orange']
50         var divArr= document.getElementsByTagName("div"); 
51             for( var i=0; i<4; i++ ) { 
52                 (function(){
53                     var c=i;
54                     divArr[i].onclick=function(){
55                         alert(colorArr[c]); // 4、这个c可是会常驻内存的,因为这层匿名函数用了外层匿名函数的变量
56                     }
57                 })() 
58 
59             } 
60         }
61 //加一层闭包,返回一个函数作为响应事件
62      function test4() { 
63         var colorArr=['green','blue','red','orange']
64         var divArr= document.getElementsByTagName("div"); 
65             for( var i=0; i<4; i++ ) { 
66                     divArr[i].onclick=(function(c){
67                         return function(){
68                             alert(colorArr[c]); //5、这个c也是会常驻内存的,因为这层匿名函数用了上一层匿名函数的变量
69                         }
70                     })(i) 
71             } 
72         }
73 
74 </script> 
75     
76 </body>
77 </html>
原文地址:https://www.cnblogs.com/Renyi-Fan/p/9030855.html