定義函數(shù)
在JavaScript中芽丹,定義函數(shù)的方式如下:
function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
上述abs()函數(shù)的定義如下:
function指出這是一個(gè)函數(shù)定義绸吸;
abs是函數(shù)的名稱穿扳;
(x)括號(hào)內(nèi)列出函數(shù)的參數(shù),多個(gè)參數(shù)以,分隔;
{ ... }之間的代碼是函數(shù)體,可以包含若干語句,甚至可以沒有任何語句。
請注意父晶,函數(shù)體內(nèi)部的語句在執(zhí)行時(shí),一旦執(zhí)行到return時(shí)弄跌,函數(shù)就執(zhí)行完畢甲喝,并將結(jié)果返回。因此铛只,函數(shù)內(nèi)部通過條件判斷和循環(huán)可以實(shí)現(xiàn)非常復(fù)雜的邏輯埠胖。
如果沒有return語句,函數(shù)執(zhí)行完畢后也會(huì)返回結(jié)果淳玩,只是結(jié)果為undefined直撤。
由于JavaScript的函數(shù)也是一個(gè)對(duì)象,上述定義的abs()函數(shù)實(shí)際上是一個(gè)函數(shù)對(duì)象蜕着,而函數(shù)名abs可以視為指向該函數(shù)的變量谋竖。
arguments
JavaScript還有一個(gè)免費(fèi)贈(zèng)送的關(guān)鍵字arguments,它只在函數(shù)內(nèi)部起作用承匣,并且永遠(yuǎn)指向當(dāng)前函數(shù)的調(diào)用者傳入的所有參數(shù)蓖乘。arguments類似Array但它不是一個(gè)Array:
function foo(x) {
alert(x); // 10
for (var i=0; i<arguments.length; i++) {
alert(arguments[i]); // 10, 20, 30
}
}
foo(10, 20, 30);
利用arguments,你可以獲得調(diào)用者傳入的所有參數(shù)悄雅。也就是說驱敲,即使函數(shù)不定義任何參數(shù)铁蹈,還是可以拿到參數(shù)的值:
function abs() {
if (arguments.length === 0) {
return 0;
}
var x = arguments[0];
return x >= 0 ? x : -x;
}
abs(); // 0
abs(10); // 10
abs(-9); // 9