能夠先看上篇文章[理解javascript中的函數參數與函數名](http://www.javashuo.com/article/p-gvufnnut-db.html)來更好地理解這篇文章的內容。
在其餘語言中,能夠爲一個函數編寫兩個定義,只要這兩個函數的參數個數或者參數類型不一樣便可。可是在javascript中,因爲函數參數沒有個數與類型的限制,而是由一個數組來表示的,因此javascript中的函數是不可能實現函數重載的。
結合函數名爲指針([上篇文章有詳細介紹](http://www.javashuo.com/article/p-gvufnnut-db.html)看下上篇文章可以更好的理解這一問題):javascript
```javascript
function fn (a) {
return a + 5
}
function fn (a) {
return a * 5
}
console.log(fn(1)) // 5
```
由於fn僅僅是一個指向函數的指針,所以在再次定義函數fn的時候,實際上是改變fn的指針使其指向了後面的函數對象,所以最後調用fn(1)執行的時候後面的函數,結果爲5,過程以下圖:html