2016-04-16 6 views
1

に機能を割り当て、この次()関数は実行されませんので、警告ボックスがJS - 我々はすべて知っているように、変数

// 1st 
 
function a() { 
 
    alert('A!'); 
 
    return function() { 
 
    alert('B!'); 
 
    }; 
 
};

、我々は表示されません次のコードは、a()関数警告ボックス 'A!'を実行することを知っています。表示されます

// 2nd 
 
function a() { 
 
    alert('A!'); 
 
    return function() { 
 
    alert('B!'); 
 
    }; 
 
}; 
 
a(); // calling function
しかし

、我々は次のコードを実行した場合、()関数は警告ボックスと呼ばれます '!' なぜこれが(第三スニペットに)起こるん:?また、ちょうど

// 3rd 
 
function a() { 
 
    alert('A!'); 
 
    return function() { 
 
    alert('B!'); 
 
    }; 
 
}; 
 
var x = a(); // assigning function to new variable

前述の第2のコードのようQUESTION、表示されますか。私たちはa()関数をまだ呼び出さなかった(私の現在の理解)。 xをa()関数に代入していませんか?

+0

'()'これは関数を呼び出します。そして、その関数の戻り値を 'x'に代入します。 –

+0

'() 'をつけたものは、その名前の関数/メソッドを見つけ出すでしょう。 – Rayon

+1

* a()関数を呼び出さなかった* - そうしました – Pointy

答えて

5

xをa()関数に代入していませんか?

いいえ、a()からxに返された値を割り当てました。

あなたは

var x = a; 

を行うと、後であなたは間違っている

x(); 
+0

GENIUS、ご説明いただきありがとうございます。 – xcode

1

を行い、その後、aを呼び出すにしたくない場合。あなたは機能を呼び出している:

var x = a(); // assigning function to new variable 

このコード行は、あなたがa()を書くときaを呼び出すと言います。かっこは呼び出しを示します。

var x = a; 

または関数fに名前を渡します:反例として

f(a) 

など、あなただけの名前を使用する必要が関数を変数に割り当てるには

次のコード行でそれを呼び出し、その関数が実行結果ではなくgに渡されます。

g(a()) 
関連する問題