zoukankan      html  css  js  c++  java
  • (转)Javascript匿名函数的写法、传参、递归

    (原)http://www.veryhuo.com/a/view/37529.html

    (转)javascript匿名函数的写法、传参和递归

    javascript匿名函数的写法、传参和递归

     
     

    今天在整理javascript入门培训的PPT时,提到了匿名函数,所以拿来分享下心得。

    匿名函数的写法
    顾名思义,就是没有名字的函数(⊙﹏⊙b汗)。匿名函数通常用于javascript作用域的控制,可以有效的避免对全局变量的污染。常见的匿名函数有下面四种写法,欢迎补充:

    匿名函数写法一
    (function(){
     //do something
    })();匿名函数写法二
    !function(){
     //do something
    }();

    上面!还可以写成+,!!等多种方式。
    上面两种方法是我常用的,下面两种方法是google上找的,我没用过(好吧,我out啦)。

    匿名函数写法三
    (function(){
     //do something
    }());匿名函数写法四
    void function(){
     //do something
    }();

    刚才微博上@朴灵 提出来:写法三最安全,压缩工具打包压缩后不会出现上下文错误,例如第一种写法,如果下面的代码,未压缩之前是正常的,压缩后就不正常了,所以要严格上下文的;问题,而第三种就不会出现类似问题:

    var a = function(){}
    (function(){
     alert(1);
    })();

    上例中就出现了错误,这就是因为a函数会把他后面的匿名函数作为参数传入a中,这也就解释了为什么有人习惯在匿名函数之前添加;了,就是为了防止上文没有严格遵循javascript语法,漏掉;的问题。

    匿名函数的传参
    匿名函数可以通过下面的方式进行传参:

    (function(win, doc){
     var $ = function(id){
      return doc.getElementById(id);
     }
     win.$ = $;
    })(window, document);

    匿名函数的递归

    匿名函数中要引用本身,需要使用arguments.callee,下面是使用匿名函数实现的连乘。

    (function(n){
     if(n <= 0){
      return 1;
     }else{
      return n * arguments.callee(n-1);
     }
    })(4);

  • 相关阅读:
    【C++ Primer Chapter 3 总结】Library vector & string Type
    【C++ Primer Chapter 4 总结】左值 & 右值
    【C++ Primer Chapter 6 总结】函数
    mysql添加索引
    注册plsql
    挑战答题小程序
    开源答题小程序
    答题如何防止作弊
    党史知识答题活动小程序复盘整理
    党史学习教育答题活动复盘
  • 原文地址:https://www.cnblogs.com/allearner/p/3898867.html
Copyright © 2011-2022 走看看