标签:
解释:()是最高级别的,一个匿名函数,加上一个马甲,就能立马飞起来。
那么什么是匿名函数?从字面上去解释很简单,没有名字的函数就叫做匿名函数。
举个栗子:我们平时定义函数是这样的:
<!-- lang: js -->
function abs(){
//code
}
也可以有带参数,有返回值:
<!--lang:js-->
function abc(a){
return a;
}
那么下面我们来创建一个没有名字的函数:
<!--lang:js-->
function(){
//code
}
可以看到,这个函数没有名字,不像上面的函数有abc这样的名字。那么,我们还不确定这个没有名字的家伙是不是个函数,我们就地按F12看一下:
<!--lang:js-->
console.log(typeof function(){}); //function
实践证明,这就是一个函数,这个函数没有名字,我们可以给他传参数:
<!--lang:js-->
function(x){
return x;
}
那么问题来了,这些家伙都没有名字,我们该怎么找到他们,或者说怎样去调用这个函数?
对于普通的函数,我们直接叫他们的名字,他们就会答应,比如刚开始的例子:abc();就可以了,或者我们还可以通过其他途径来调用这个函数:
<!--lang:js-->
var hello =function abc(){};
hello();
下面就是“()”的舞台了,我们指导()的运算级最高,并且()表达的意思是一块,也就是一对小括号就是一块,每一块都有一个返回值。这个返回值就是小括号内表达式的返回值。
所以,当我们把匿名函数用小括号括起来的时候,实际上小括号返回的就是这个匿名函数的对象,因此,我们就可以通过小括号的形式调用这个函数,
然后,在小括号的后面加上一些参数,就实现了调用函数的功能。
虽然上面的话很不好理解,但是它的名字还是比较科学的:“自执行匿名函数”或者“立即调用的函数表达式”。
用的时候就这样:
<!--lang:js-->
(function(){
//code
})()
也可以传参数:
<!--lang:js-->
(function(x){
return x
})(x)
上面的这些理解很浅,只当做我学习的一点点记录,如果你感觉到有意思,就笑一笑,如果你感觉到很没意思,也笑一笑。
标签:
原文地址:http://my.oschina.net/gavin0/blog/403331