JavaScript的匿名函数
JavaScript中的匿名函数,类似于C#的委托调用,可以将一个函数作为一个变量传给另一个函数使用.(这在jQuery中有着非常好的体现.[多体会下]),而且还可以避免命名冲突的问题.
例1:
var f1=function(i1,i2){//声明了一个变量,这个变量的值是一个函数
return i1+i2;
}
alert(f1(5,10));//使用这个变量
结果:弹窗显示15;
-------------------------------
例2:
var f2=function(name,age){
alert(name+age);
}
f2("tom",30)
结果:弹窗显示tom30
-------------------------------
例3:
alert(function(i1,i2){alert(i1+i2);}(30,50));//直接声明一个匿名函数,立即使用
结果:弹窗依次显示80,undefined.
问题:为什么会显示 undefied?
---------------------------------
例4:
var f4= function f1(name,age){
this.name=name;
this.age=age;
this.SayHello=function (){
alert ("Hello,"+this.name);
}
};
alert ((new f4("tom",30)).name);
结果:弹窗显示tom
var p2=new f4("tom",30)
alert (p2.SayHello());
结果:弹窗显示hello,tom后再又弹窗显示undefied
问题:为什么这里又会弹窗显示undefied?
注释掉this.SayHello=function (){
alert ("Hello,"+this.name);
}
用下面的代码来测试
var p2=new f4("tom",30)
alert (p2.name);
结果:弹窗显示tom
----------------------------------------
推测:是function的原因么?在研究了javascript运行的机理,再回来看看这段代码.