Js闭包

<!DOCTYPE html>
<html>
<head>
        <meta charset=UTF-8 />
        <title></title>
<script>
window.onload = function(){
        var aLi = document.getElementsByTagName('li');
        for (var i=0;i<aLi.length;i++){
                (function(i){
                        aLi[i].onclick = function(){
                                alert(i);
                        };
                })(i);
        }
        };
</script>
        
</head>
<body>
    <ul>
        <li>123</li>
        <li>456</li>
        <li>789</li>
    </ul>
</body>
</html>

 

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>闭包演示</title>
<style type="text/css">
    p {background:gold;}
</style>

</head>
<body>
<p>产品 0</p>
<p>产品 1</p>
<p>产品 2</p>
<p>产品 3</p>
<p>产品 4</p>

<script type="text/javascript">

    window.onload = function(){
    
       var pAry = document.getElementsByTagName('p');
    /**for (var i=0;i<aLi.length;i++){
            (function(arg){
                    aLi[i].onclick = function(){
                        alert(arg);
                    };
            })(i);
        }*/
        
        
            
    /**    for( var i=0; i<pAry.length; i++ ) {
        
             pAry[i].onclick = Function('alert('+i+')');
             
        }*/
    /**    
        
        for( var i=0; i<pAry.length; i++ ) {
      pAry[i].onclick = new Function("alert(" + i + ");");//new一次就产生一个函数实例
    }
            
        */
        
        
        /**
         for( var i=0; i<pAry.length; i++ ) {
            (function () {
              var temp = i;//调用时局部变量
              pAry[i].onclick = function() {
                alert(temp);
              }
            })();
          }
        */
        
        /**
        for( var i=0; i<pAry.length; i++ ) {
           (function(arg){
               pAry[i].onclick = function() {
                  alert(arg);
               };
           })(i);//调用时参数
          }
        
        */
        
        
        /**
         for( var i=0; i<pAry.length; i++ ) {
           (pAry[i].onclick = function() {
                alert(arguments.callee.i);
            }).i = i;
          }
                
        */
        
        
    };
    
</script>
</body>
</html>
人如代码,规矩灵活;代码如诗,字句精伦。
原文地址:https://www.cnblogs.com/xinlinux/p/4118038.html