js闭包(二)

有两种方式:
一是定义一个变量接收子函数返回的值,再执行变量所在的函数,二是子函数直接在里面就调用。
还是拿案例一来说:
可以改成第一种方式。
 function aa(){
    var b=10;
    return function cc(){                        
        b++;
        alert(b);
    }
 }

var dd=aa();
dd();  
结果:11


第二种方式:
function aa(){
    var b=10;
    (function cc(){                        
        b++;
        alert(b);
        })();
    }

alert(aa());
弹出两个结果分别是:11,undefined  

为什么第二个会弹出 undefined,因为:如果一个函数没有返回值,则会留下一个 undefined
注意如果内部函数在里面执行,那么前面就不要写 return,
如:return (
    function cc()
    { b++; alert(b);
    })();  
此时return在里面没有意义,因为没有返回值 ,就不要写 return,就像java 不会写 return void一样。

函数运行就是个闭包,如果里面的子函数不在里面执行,就要加上return ,然后在父函数外面调用返回的子函数。


应用的实例:

window.οnlοad=function(){

       varli=document.getElementsByTagName("li");

       for(vari=0;i<li.length;i++){

            li[i].οnclick=(function(n){

                      return  function(){

                 alert(n);         

                      }

               })(i);

              }

       }

 <ul>

  <li>1</li>

  <li>2</li>

  <li>3</li>

  <li>4</li>

  <li>5</li>

 </ul>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值