2017-06-11 3 views
-6

私は私の質問は、なぜ私たちは()の呼び出しを実行することはできませんですなぜこの関数を2回呼び出す必要があるのですか?

let call =() => 
 
{ 
 

 
    let secret = "es6 rocks"; 
 

 
    let reveal =() => 
 
    { 
 

 
     console.log(secret); 
 
    } 
 
    return reveal; 
 

 

 

 
} 
 

 
let unveil = call(); 
 
unveil();

Udemyコースからこのコードを持っています。関数 ?なぜlet文でそれを実行しなければならないのですか?

2番目の質問:なぜここに戻る必要がありますか?

+1

??何?あなたは '' call() '関数を実行するだけです。そして、' 'call ''関数は一度呼び出されます。 – Pointy

+0

これは役立つかもしれません:[JavaScriptのクロージャはどのように機能しますか?](https://stackoverflow.com/questions/111102/how-do-javascript-closures-work) –

答えて

1

call関数は、("es6 rocks"を記録する)関数を返します。この関数は、unveilに割り当てます。

call関数を実行することはできません。これは、ロギング関数を返しますが、呼び出すのではないためです。

関数を変数に代入しているため、そこに戻り値を使用する必要があります。

また、最後の2つと同じ結果を得る別の方法はcall()()です。

+0

関数を変数に代入する際に常にreturnを使用する必要がありますか? – Matthew

+0

関数の結果を返すには、 'return'を使う必要があります。 – SuperStormer

+0

@Matthewいいえ、あなたは関数から値を返すために 'return'ステートメントを使わなければなりません。変数に値を代入する場合は、値を指定する必要があります。これは、関数呼び出しから返された値を変数に代入することだけです。 – Thomas

関連する問題