I am houbiao beta 0.1

javascript学习笔记之匿名函数的写法、传参和递归

分类:Self

非原创,网上看到的,觉得很靠谱很通俗易懂,复习加备忘,转过来了。原址在结尾处。

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

匿名函数写法一

(function(){//do something})();

 

匿名函数写法二

!function(){//do something}();上面!还可以写成+,!!等多种方式。

 

匿名函数写法三

(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);

这就定义了一个回传id的方法,用法:$("container"),返回id为container的DOM元素。

 

匿名函数的递归:

匿名函数中要引用本身,需要使用arguments.callee,下面就是一个简单的示例。

(function(n){ if(n>0){ alert(n) arguments.callee(n-1); }})(4);

原文点此

3862 reads 1 comments

上一篇:javascript学习笔记之Precompiled(预编译机制)

回复信息

Chucky

A rolling stone is worth two in the bush, thanks to this artecli.

Leave a comment

*