JS高程3.基本概念(6)函數

來源:互聯網
上載者:User

標籤:c99   結束   不能   分享   命名   argument   技術   依次   hello   

1.ECMAScript中的函數使用function關鍵字來聲明。

eg:

1 function sum (num1,num2){2     alert(num1+num2);3  }4  sum(3,7);

注意:

  在有return語句的函數中,函數會在執行完return語句後停止並立即退出。因此,位於return語句之後的任何代碼都永遠不會執行。

eg:

1 function sum (num1,num2){2     return num1+num2;3     alert("Hello!");//永遠不會執行。4  }5  alert(sum(3,7));

  以上代碼執行後,會出現內容為“10”的警告框,但是不會出現內容為“Hello!”的警告框,因為函數內部執行完return語句後就停止結束了,不會執行後面的alert(“Hello!”);語句。

 

2.strict 模式下對函數的一些限制

(1)不能把函數命名為evel或是arguments;

(2)不能把參數命名為evel或是arguments;

(3)不能出現兩個具名引數同名的情況。

 

3.理解參數

(1)ECMAScript中的參數在內部是用一個數組來表示的,函數接收到的始終是這個數組,ECMAScript函數不介意傳遞進來的參數個數以及參數的資料類型,從這一點可以看出,ECMAScript函數不能實現傳統意義上的重載。

 重載函數的定義:在相同的聲明域中的函數名相同的,而參數表不同的,即通過函數的參數表而唯一標識並且來區分函數的一種特殊的函數。

(2)函數體內可以通過arguments對象訪問到參數數組,從而獲得傳遞給函數的每一個參數。

  

1  function sum (){2     return arguments[0]+arguments[1];3  }4  alert(sum(3,6));

 

以上例子說明:

  ECMAScript函數命名的參數只提供便利,但不是必需的。

(3)arguments對象的length屬性可以獲知有多少個參數傳遞給了函數。

eg:

1 function howManyArgw(){2     alert(arguments.length);3  }4  howManyArgw("hello",45); //25  howManyArgw();     //06  howManyArgw(12);   //1

出現三個提示框,依次是:

(4)開發人員可以利用這一點讓函數接收任意個參數並分別實現適當的功能。

eg:

1  function doAdd(){2         if(arguments.length==1){3             alert(arguments[0]+10);4         }else if(arguments.length==2){5             alert(arguments[0]+arguments[1]);6         }7     }8     doAdd(20);9     doAdd(21,10);

 

(5)arguments對象可以與具名引數一起使用:

eg:

1  function doAdd( num1,num2){2         if(arguments.length==1){3             alert(num1+10);4         }else if(arguments.length==2){5             alert(arguments[0]+num2);6         }7     }8     doAdd(20);9     doAdd(21,10);

(6)arguments的值永遠與對應具名引數的值保持同步。

eg:

1  function add(num1,num2){2         arguments[1]=10;  //每次執行add函數都會重寫第二個參數,將第二個參數的值改為10.3         alert(arguments[0]+num2);4     }5     add(1,2);//本來的值是1+2=3,因為第二個參數的值被改變1+10=11.

注意:

(1)這並不是說著兩個值會訪問相同的記憶體空間,它們的記憶體空間是獨立的,但是它們的值會同步。

(2)沒有傳遞值的具名引數將會自動被賦予undefined值。

eg:

1 function add(num1,num2){2         arguments[1]=10;3         alert(arguments[0]+num2);4     }5     alert(typeof(num2));6     add(1);

依次出現的提示框:

(3)ECMAScript中的所有參數傳遞都是值,不可能通過引用傳遞參數。

  

 

JS高程3.基本概念(6)函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.