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运行的机理,再回来看看这段代码.

 

 

posted @ 2012-06-16 01:11  loongso  阅读(170)  评论(0编辑  收藏  举报