HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

関数のオーバーロードはできないよ

Javaを使って開発していると結構はまりがち。

以下のようなHTMLファイルを作ってみる。

<html>
    <head>
    <script type="text/javascript">
        function getContent( a, b, c ) {
            var elem = document.getElementById('tmp');
            elem.innerHTML = 'getContent(a,b,c): ( ' + a + ', ' + b + ', ' + c + ' )';
        }
        function getContent2( a, b, c ) {
            var elem = document.getElementById('tmp');
            elem.innerHTML = 'getContent2(a,b,c): ( ' + a + ', ' + b + ', ' + c + ' )';
        }
        function getContent2( a, b, c, d ) {
            var elem = document.getElementById('tmp');
            elem.innerHTML = 'getContent2(a,b,c,d): ( ' + a + ', ' + b + ', ' + c + ', ' + d + ' )';
        }
        function getContent3( a, b, c, d ) {
            var elem = document.getElementById('tmp');
            elem.innerHTML = 'getContent3(a,b,c,d): ( ' + a + ', ' + b + ', ' + c + ', ' + d + ' )';
        }
        function getContent3( a, b, c ) {
            var elem = document.getElementById('tmp');
            elem.innerHTML = 'getContent3(a,b,c): ( ' + a + ', ' + b + ', ' + c + ' )';
        }
    </script>
    </head>
    <body>
        <div>
            <ul>
                <li><input type="button" value="getContent( a, b, c )" onclick="getContent('a', 'b', 'c')" /></li>
                <li><input type="button" value="getContent( a, b, c, d )" onclick="getContent('a', 'b', 'c', 'd')" /></li>
                <li><input type="button" value="getContent2( a, b, c )" onclick="getContent2('a', 'b', 'c')" /></li>
                <li><input type="button" value="getContent2( a, b, c, d )" onclick="getContent2('a', 'b', 'c', 'd')" /></li>
                <li><input type="button" value="getContent3( a, b, c )" onclick="getContent3('a', 'b', 'c')" /></li>
                <li><input type="button" value="getContent3( a, b, c, d )" onclick="getContent3('a', 'b', 'c', 'd')" /></li>
            </ul>
        <div id="tmp">
        </div>
    </body>
</html>

これをブラウザで表示させて、各ボタンを押したときにどういう結果が表示されるか、という問題。

これをちゃんと理解しないで、Javaと同じ感覚で「関数のオーバーロードだぁ!」なんてことをやると痛い目にあう。