引数は省略可能なので、仮引数の数による関数の区別はない。
つまり、Javaでいうところのメソッドのシグネチャは、純粋に関数名によるらしい。
<script type = "text/javascript"> function abc(a, b) { alert("abc1"); } function abc(a, b, c) { alert("abc2"); } abc(1, 2); </script>
だと、"abc2"が表示されて、
<script type = "text/javascript"> function abc(a, b, c) { alert("abc2"); } function abc(a, b) { alert("abc1"); } abc(1, 2); </script>
だと、"abc1"が表示される。
つまり、後から定義された関数の勝ちってことかな。
一つの関数を引数の数によって挙動を分けたい場合は、
arguments.length
を使うのがJavaScript流らしい。
(参考)JavaScriptの使える小技です。: Javascriptでオーバーロードを実現する