【JavaScript】戻り値指定なしのreturn、ローカル配列arguments

2007.04.18 Author: たわばがに

ということで、今回はJavaScriptの小ネタです。
普段あまり意識していない部分に着目してみました。

【その1.戻り値指定なしのreturnは何も返していないのか?】

通常、関数でreturnを書く場合は何らかの戻り値を指定する場合が多いと思いますが、
もし戻り値を指定しなかった場合は、本当に何も返らないのだろうか?
ということで、実験してみました。

<script type="text/javascript">
<!--
// returnあり
function hoge() {
    return;
}
// returnなし
function hogehoge() {
}
// 表示
function test() {
    if (hoge()) {
        alert("test1");
    }
    if (hoge() != "") {
        alert("test2");
    }
    if (hoge() == undefined) {
        alert("test3");
    }
    alert(hoge());
    alert(hogehoge());
}
//-->
</script>
<input type="button" name="button" value="テスト" onClick="test()">

以下、結論。

実際にはundefined(未定義値)が返る。
returnを書かない場合も同じく、undefinedが返る。

なので、alertで表示されるのは、test2とtest3、そして最後の2つのundefinedとなります。
戻り値を指定しない場合は気に留めておいた方がよいかもしれません。


【その2.関数に不定の引数を渡した場合の扱いは?】

これに関しては、実験から結果を述べるのみとなります。

<script type="text/javascript">
<!--
function hoge() {
    alert(arguments[0]);
    alert(arguments[1]);
}
//-->
</script>
<input type="button" name="button" value="テスト" 
onClick="hoge('おっす','オラ、たわばがに')">

以下、結論。

関数に渡した引数は、関数内のローカル変数(配列)argumentsに格納され、
arguments[0]やarguments[1]といった指定で引き出すことが可能。

なので、alertで表示されるのは、
arguments[0]とarguments[1]に格納された「おっす」と「オラ、たわばがに」となります。

以上、痒いところに手が届きそうなネタでした。