Javascriptは引数をまじめにチェックしない。Javaとかからしたらありえないが、これはこれでちゃんと使えば柔軟になる。
- argumentsオブジェクト
function sample(){ document.writeln(arguments.length); for(var i = 0; i < arguments.length ; i++){ document.writeln(arguments[i] + "<br>"); } } // document.writeln(arguments.length); // not defined.エラー出力 sample('a','b','c','d');
実行結果
4 a b c d
関数内以外でargumentsオブジェクトを呼び出すとエラーになることから、argumentsオブジェクトは関数が呼び出され引数が渡された時に生成されるようだ。argumentsオブジェクトは配列のように扱えるのでfor文で値を取り出すことが可能となる。
- 名前付き引数
function sample(args){ document.writeln(arguments.length + "<br>"); document.writeln("height:"+args.height); document.writeln("width:"+args.width); } sample({height:10,width:20})
実行結果
1 height:10 width:20
関数の引数にオブジェクトリテラルを渡すと名前付き引数ということができるようになるらしい。まぁ便利といえば便利かな。