javascript中的函数对象

在javascript中函数的申明方式有四种 下面代码中一句代表了一种
1  function  func1(…){…} 
2  var  func2 = function (…){…}; 
3  var  func3 = function  func4(…){…}; 
4  var  func5 = new  Function();
第一种就是我们常见的函数申明方式,函数名为func1。第二种和第三种的区别是第二种是匿名函数,而第三种不是。第四种用的是对象申明的方式,因为javascript每个函数就是一个对象。
1  // 这两种声明是等价的
2    function  func1(a,b){
3     return  a + b;
4  }
5  var  func1  =   new  Function( " a " , " b " , " return a+b " );
匿名函数和有名字函数在javascript中是有点区别的我们看代码
1    // 声明一个匿名函数
2   func1();
3  var  func1  =   function (){
4       alter( 1 );
5  }

运行火狐
firbug中说func1未定义
看看另外一种方式

1  func1();
2  function  func1(){
3    alert( 1 );
4  }
由此可见,尽管JavaScript是一门解释型的语言,但它会在进行函数调用时,检查整个
代码中是否存在相应的函数定义,这个函数名只有是通过 function funcName()形式定义的才有效,而不能是匿名函数。

匿名函数的申名方式有个好处就是防止函数重命名。在javascript还有匿名函数可以在申明之后立即调用,代码如下。

1  var  i = function (a,b){
2       return  a + b;
3  }( 1 , 2 );
这里i=3是返回值而不是函数,这是因为()的优先级比=高
在jquery中的插件扩展就是这样实现的,我们来看看代码。
 1  ( function ($){
 2   
 3  $.fn.select  =   function (select) {
 4       if  (select  ==  undefined) select  =   true ;
 5       return   this .each( function () { 
 6           var  t  =   this .type;
 7           if  (t  ==   ' checkbox '   ||  t  ==   ' radio ' )
 8               this .checked  =  select;
 9           else   if  ( this .tagName.toLowerCase()  ==   ' option ' ) {
10               var  $sel  =  $( this ).parent( ' select ' );
11               if  (select  &&  $sel[ 0 &&  $sel[ 0 ].type  ==   ' select-one ' ) {
12                   //  deselect all other options
13                  $sel.find( ' option ' ).select( false );
14              }
15               this .selected  =  select;
16          }
17      });
18  };
19   
20  })(jquery)
注意直接这样写
function(a,b){
return a+b;
}(1,2)
是会报语法错误的。

转载于:https://www.cnblogs.com/phpzxh/archive/2009/09/16/1568137.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值