匿名函数

来源:互联网 发布:淘宝青石板 编辑:程序博客网 时间:2024/05/03 05:07

以下全是个人理解以及网上查找而来,如有不对请指正...

 

匿名函数

几种匿名的写法

(function(){})();最常见到的;

(function(){}());

void function(){};

 

错误的写法

function(){}(); 

为什么会这样了,  看看函数声明的语法和函数表达式的语法说明

 

 一.函数声明

function name([param[, param[, ... param]]]) {
   statements
}

这里的函数名称name是不可以省略的,省略了函数名就会报错

function (){alert('eee')}

因为编译器当他是函数声明而代码中没有函数名,所以就报错了.

 

二.函数表达式

function [name]([param] [, param] [..., param]) {
   statements
}

函数名称name可以被省略,省略name就是所谓的匿名函数.

说明一点:如果需要创建匿名函数,则必须给出一个函数表达式而非函数的显式声明

 

1/2/3匿名函数代码模式只不过是通过括号或者void告诉编译器,把function(){}当作函数表达式来解释罢了。这其中并没有那么复杂的优先级和void操作符原理。这只不过是一个简单的语法转换。

 

可以想象,只要符合函数表达式的语法,我们就可以创建出N种匿名函数代码模式,比如

!!function(){
   alert('yo');
}()
+function(){
   alert('yo');
}()

 

完了  唉 好象上面都是转载的别人的 嘿嘿

 

顺便写写匿名函数的好处

能够不使用全局变量,防止变量冲突,不知道还有没有??????

 

还有就是 有些人看到(function(){})();
就说什么闭包 闭包 

这可是错误的 要function中的 匿名函数 引用外部的变量 才能算是闭包.........

原创粉丝点击