by shigemk2

当面は技術的なことしか書かない

JavaScriptにおける引数

JavaScriptのfunctionの引数にデフォルト値を設定する - 桜ヶ丘日記

JavaScriptの引数ってどうなっているんだろうと思ってちょっと調べてみた。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Hoge</title>
  </head>
  <body>
  </body>
</html>
<script type="text/javascript">
var msg = function() {
    // argumentsは引数の値が格納された配列
    // arguments.lengthはその配列の要素数(つまり引数の数)
    // 三項演算子を利用してtxtとshobonの2つの変数に値を入れる

    var txt    = (arguments.length > 0) ? arguments[0] : '';
    var shobon = (arguments.length > 1) ? arguments[1] : true;

    if (txt === '') {
	alert('なんか言ってくれよ');
    } else {
	if(shobon) {
	    alert(txt + '君の手が温かい');
	}else{
	    alert(txt + 'はい');
	}
    }
}

/* 呼び出してみるテスト */
msg();
msg('しょぼん');
msg('しゃきーん', false);
msg(1, 1, 1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1,1, 1);
</script>

argumentsという配列に引数は格納されているみたいだ。

省略された引数は、存在しない要素にアクセスしているようなものなので、
undefinedと表示される。
つまり、PHPみたく勝手に引数を省略したからといってエラーが起きてストップすることはない


ちなみに、省略された引数の場合は、

if(typeof arg2 == 'undefined')

みたいな感じで再利用するといいかと。
オプション引数(省略できる引数) - prog*sig