javascript中的函數對象

來源:互聯網
上載者:User
在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 }

運行Firefox
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)
是會報語法錯誤的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.