JavaScript系列:ECMAScript函數

來源:互聯網
上載者:User

  函數是一組可以隨時隨地啟動並執行語句,它們是ECMAScript的核心。函數由關鍵字function、函數名加一組參數以及置於括弧中要執行的代碼聲明的。

  函數的基本文法如下:

function functionName (arg0, arg1, ... ,argN) {     statements      }

  如果函數無明確的傳回值,或調用了沒有參數的return語句,那麼它真正返回的值是undefined。

  1、無重載

  ECMAScript中的函數不能重載。可以使用相同的名字在同一個範圍中定義兩個函數,而不引發錯誤,但真正使用的是最後一個函數。

  2、arguments對象

  在函數代碼中,使用特殊對象arguments,開發人員無需明確指出參數名,就能訪問它們。arguments[0]表示第一個參數(第一個參數位於位置0,第二個參數位於位置1,依此類推)。因此無需明確具名引數,就可以重寫函數。

  使用arguments對象檢測傳遞給函數的參數個數,引用屬性arguments.length。

  使用arguments對象判斷傳遞給函數的參數個數,即可類比函數重載。

function doAdd () {    if (arguments.length == 1) {        alert(arguments[0] + 10);    } else if (arguments.length == 2) {        alert(arguments[0] + arguments[1]);    }}

  3、Function類

  Function類可以表示開發人員定義的任何函數。用Function類直接建立函數的文法如下:

var function_name = new Function (argument1, argument2, argument3,  ... , argumentN, function_body);

  儘管可用Function建構函式建立函數,但最好不要使用它,用它定義函數比用傳統方式要慢得多。不過,所有函數都應看作是Function類的執行個體。

  因為函數是參考型別,所有它們也有屬性和方法。ECMAScript定義了屬性length聲明了函數期望的參數個數。

function doAdd(iNum) {    alert(iNum + 10);}alert(doAdd.length); // outputs "1"

  ECMAScript函數可以接受任意多個參數(最多25個),屬性length只是為了查看預設情況下預期參數個數提供了一種便捷的方式。

  Function對象也有與所有對象共用的標準valueOf()方法和toString()方法。這兩個方法返回的都是函數的原始碼,在調試時尤其起作用。

  4、閉包

  閉包是指詞法表示包括不必計算的變數的函數。即該函數可以使用函數外定義的變數。

  在ECMAScript中使用全域變數是一個簡單的閉包執行個體。

var message = "Hello World";function() {    alert(message);}
相關文章

聯繫我們

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