加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 创业 > 模式 > 正文

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

发布时间:2018-10-15 22:34:41 所属栏目:模式 来源:站长网
导读:今天在整理javascript入门培训的PPT时,提到了匿名函数,所以拿来分享下心得。 匿名函数的写法 顾名思义,就是没有名字的函数(⊙﹏⊙b汗)。匿名函数通常用于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);

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读