在JavaScript中有一種特殊的資料型態---Function類型,JavaScript的每個函數都是Function類型的實例。由於函數是對象,因此函數名稱實際上也是一個指向函數對象的指針,不會與某個函數綁定。
<pre name="code" class="html">function sum(num1,num2) { return num1 +num2; } alert(sum(10,10)); //20 var other = sum; alert(other(10,10)); //20 sum = null; alert(other(10,10)); //20
將函數名稱作為指向函數的指針,有助於理解為什麼ECMAScript中沒有函數重載的概念
function sum(num1) { return num1 +100; } function sum(num1) { return num1 +200; } alert(sum(200)); //400
雖然宣告了兩個同名函數,但是後面的函數覆蓋了前面的函數,以上等價於下面的程式碼
function sum(num1) { return num1 +100; } sum = function(num1) { return num1 +200; } alert(sum(200)); //400
在建立第二個函數時,實際上覆寫了引用的第一個函數變數sum