宣言時の引数と渡された引数の比較
function f(arg){ // 宣言時の引数の数と渡された引数の数の比較 // 左辺は関数自身Functionオブジェクトのlength // 右辺はローカル変数argumentsオブジェクトのlength return arguments.callee.length==arguments.length; } f(1); //true f(1,2); //false
arguments.calleeは実行中関数への参照なので、arguments.callee.lengthをf.lengthとしても同じ。
当然ながらf.lengthでは関数の外からでも可能。
ただし
「JavaScript 1.4: Function のプロパティとしての arguments、arguments.callee、および arguments.length を非推奨とする。関数のローカル変数としての arguments、およびこの変数のプロパティとしての arguments.callee と arguments.length はそのまま維持。」
ECMA-262
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Functions/arguments