1

something返された無名関数の値と等しいという事実に頭を悩ませようとしています。スコープを設定すると、関数変数にアクセスできなかったと思いました。

somethingでは、呼び出しによって3の値がどのように得られるのでしょうか。

 function somefun (x){
     return function(){
         return x;
     }
 }

 var something = somefun (3);
 something();
 //3
4

1 に答える 1

2

JavaScriptでは、関数は他のものと同様に単なるオブジェクトです。関数は変数に割り当てることができます。

したがってsomefun、に割り当てられている関数を返しますsomething。したがって、somethingは関数です。

したがって、something()が実行されると、関数であるため、値が返されます。

その機能は「クロージャ」と呼ばれます。値への参照を保持するため、x値が返されます。

于 2013-02-22T16:03:35.287 に答える