JavaScript:函數的定義和調用

來源:互聯網
上載者:User

函數是定義一次但卻可以調用或執行任意多次的一段JavaScript代碼。函數可以有參數,函數常常使用這些參數來計算一個傳回值,這個值也稱為函數調用運算式的值。當一個函數在一個對象上被調用的時候,這個函數就叫作方法。注意定義函數時可以使用個數可變的參數,而且函數既可以有return語句,也可以沒有return語句。return語句能使函數停止運行,並且把運算式的值返回給函數調用者。如果return語句沒有一個相關的運算式,它會返回undefined。如果函數不包含return語句,它就只執行函數體中的每條語句,然後返回給調用者undefined。

因為JavaScript是一種寬鬆類型的語言,所以不能給函數的參數指定一個資料類型,而且JavaScript也不會檢測傳遞過來的資料是不是那個函數所要求的類型。如果參數的資料類型很重要,那麼可以用運算子typeof對它進行檢測。JavaScript也不會檢測傳遞給它的參數個數是否正確。如果傳遞的參數比函數需要的個數多,那麼多餘的值會被忽略掉。如果傳遞的參數比函數需要的個數少,那麼所忽略的幾個參數就會被賦予undefined值。

函數直接量

JavaScript允許用函數直接量來定義函數。函數直接量是一個運算式,它可以定義匿名函數。下面的兩行代碼分別使用function語句和函數直接量定義了兩個基本上相同的函數。

function f(x){return x*x} //function statementvar f=function(x){return x*x}  //function literal

雖然函數直接量建立的是未命名函數,但是它的文法也規定它可以指定函數名,這在編寫調用自身的遞迴函式時非常有用。例如:

var f=function fact(x){if(x<=1) return 1;else return x*fact(x-1)}

上面的代碼定義了一個未命名函數,並把對它的引用儲存在變數f中。它並沒有真正把對函數的引用儲存到名為fact的變數中,而只是允許函數體用這個名字來引用自身。

由於函數直接量都是由JavaScript的運算式建立的,而不是由語句建立的,所以使用它們的方式也就更加靈活,尤其適用於那些只使用一次而且無需命名的函數。例如,一個使用函數直接量運算式指定的函數可以儲存在一個變數中,傳遞給其他的函數,甚至被直接調用:

f[0]=function(x){return x*x;};  //define a function and store ita.sort(function(a,b){return a-b;});  //define a function;pass it to anothervar tensquared=(function(x){return x*x;}) (10);  //define and invoke

函數命名

任何合法的JavaScript標識符都可以用作一個函數名。要盡量選擇描述性強而且精鍊的函數名。函數名習慣上以小寫字母打頭,當一個名字包含多個單詞的時候,可以採用底線法或者駝峰法命名。如like_this()
likeThis()

相關文章

聯繫我們

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