Javascript同名函式

Javascript有別於一般物件導向程式語言的一個特色包含Javascript在同名函式的部分處理不同,物件導向語言中可以使用同名函式,並且以參數之型態與數量來判別真正要使用的函式,但Javascript則不然...
The arguments array- the secret to robust functions」中有針對Javascript的函式名稱定義做一些說明,因為Javascript函數的參數傳遞採用陣列方式(arguments array),傳入參數的個數可用arguments.length取得,而同名的函式反而在呼叫上有會出乎意料...

/* file: 000-duplicateFun.js */
function foo(x) {
    console.log('Now call X!! x=' + x);
}
function foo(x,y) {
    console.log('Now call XY!! x=' + x);
}
foo('a');

執行結果:
$ node 000-duplicateFun.js 
Now call XY!! x=a

發現了嗎,foo(x)函式被忽略了!