1. 程式人生 > 其它 >2.4 函式基礎

2.4 函式基礎

2.4.1 函式的定義

函式是由一連串的子程式(語句的集合)所組成的,可以被外部程式呼叫。向函式傳遞引數之後,函式可以返回一定的值。

console.log("1");
function hzh() {       // 宣告函式
    console.log("2");
}
console.log("3");      // 呼叫函式
hzh();

2.4.2 函式的宣告與呼叫

可以通過函式宣告語句來定義一個函式。函式宣告語句以關鍵字function開始,其後跟有函式名、引數列表和函式體。其語法如下所示:

// 函式名為sum,引數名為a和b
// 函式宣告中所寫的引數稱為形參(形式引數)
function huangzihan (a,b) {
    return Number(a) + Number(b);
}

// 函式sum的呼叫
// 呼叫函式時,傳遞給函式的引數稱為實參(實際引數)
console.log(huangzihan(3,4));

函式宣告時不必指定形參的型別。任何型別的值都可以作為實參傳遞,因而開發者在設計函式時需要考慮接收錯誤型別的值的情況。此外,形參的數量和實參的數量可以不一致。所以,在JavaScript中不存在函式過載。

2.4.3 匿名函式

匿名函式的語法形式在function後跟可以省略的函式名、引數列表以及函式體。其語法如下所示:

函式宣告語句和匿名函式表示式在語法上幾乎一模一樣,唯一的區別僅僅是能否省略函式名稱。不過,因為匿名函式表示式是一種表示式而非語句,所以也可以在表示式內使用。另外由於它是表示式因此也會有返回值。匿名函式的返回值是一個 Function 物件的引用。把它簡單理解為返回一個函式也沒有問題。

// 賦值表示式右側的就是匿名函式表示式。
var hzh = function (a, b) {
    return Number(a) + Number(b)
}

// hzh的前面是var,所以它是一個變數名
// 以function開始的匿名函式表示式將返回一個函式
// 那麼我們來測試變數hzh是不是接收到一個函式

console.log("判斷函式hzh是不是接收的是函式:" + typeof hzh);

// 上面那段程式碼的含義是,將Function物件的一個引用賦值給變數hzh
// 現在我們來呼叫變數hzh所引用的函式

console.log("呼叫變數hzh:" + hzh(3, 4));

2.4.4 函式是一種物件

avaScript 的函式是一種物件,不過並不是說所有的物件都是函式。函式是一種包含了可執行程式碼,並能夠被其他程式碼呼叫的特殊的物件。