引数および引数.callee

巴扎黑
巴扎黑オリジナル
2016-11-25 09:38:551093ブラウズ

最初に JavaScript 関数があります

コード

<span style="font-family: &#39;courier new&#39;, courier;">function test(a, b, c, d) {  
    return a + b;  
}</span>

JavaScript で関数を呼び出すときの実際のパラメーターの数は、呼び出される関数の仮パラメーターの数と一致しない場合があります。これは、要件が Java ほど厳密ではないためです。 ECMAScript では、パラメーターは内部的に配列で表されます。関数が呼び出されるとき、配列にどのパラメーターが含まれているかに関係なく、または

Js コード

<span style="font-family: &#39;courier new&#39;, 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: &#39;courier new&#39;, 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: &#39;courier new&#39;, 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: &#39;courier new&#39;, courier;">var F = test2;  
test2 = null;  
console.log(F(5));</span>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。