ホームページ >ウェブフロントエンド >jsチュートリアル >引数および引数.callee
最初に JavaScript 関数があります
コード
<span style="font-family: 'courier new', courier;">function test(a, b, c, d) { return a + b; }</span>
JavaScript で関数を呼び出すときの実際のパラメーターの数は、呼び出される関数の仮パラメーターの数と一致しない場合があります。これは、要件が Java ほど厳密ではないためです。 ECMAScript では、パラメーターは内部的に配列で表されます。関数が呼び出されるとき、配列にどのパラメーターが含まれているかに関係なく、または
Js コード
<span style="font-family: 'courier new', courier;">function test(a, b, c, d) { return a + b; }
console に要素がない場合でも、常にこの配列を受け取ります。 log(test(10, 20));54bdf357c58b8a65c66d7c19c8e4d114
このようなコードは JavaScript ではエラーを報告しません。同時に、JavaScript では次のようにして実パラメータと仮パラメータの数を取得できます。 code
Js code
<span style="font-family: 'courier new', courier;">function test(a, b, c, d) { console.log(test.length);//这里获得的是形参的个数 console.log(arguments.length);//这里获得的是实参的个数,这段代码必须放在函数内部 }
console.log(test(10, 20));54bdf357c58b8a65c66d7c19c8e4d114
通常、再帰呼び出しに使用される、arguments.calee と呼ばれる同様のオブジェクトもあります
Jsコード
<span style="font-family: 'courier new', courier;">function test2(num) { if(num <= 1) return 1; else return num*arguments.callee(num-1); } console.log(test2(5));</span>
argument.callee(num-1) を test2(num-1) に変更すると、次の call でエラーが報告されます
Js コード
<span style="font-family: 'courier new', courier;">var F = test2; test2 = null; console.log(F(5));</span>