在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