2012-01-06 10 views
2

Javascript Variable Declareについて質問があります。 次の2つの定義方法の違いは何ですか? alertMsgは第1の方法で実行されますが、第2の方法では実行されないのはなぜですか? ありがとうございます。Javascript Variable Declareの別の方法

// 1

var alertMsgInvoker = alertMsg ('hi there'); 
function alertMsg (msg) { 
     alert(msg); 
} 

// 2

var alertMsgInvoker = function() { 
     alertMsg ('hi there'); 
} 
function alertMsg (msg) { 
     alert(msg); 
} 

答えて

3

最初の例では、を呼び出した結果を変数alertMsgInvokerに代入しています。 alertMsgalertMsgInvokerに入れる値を返さないという事実はここにもそこにありません。

alertMsgInvokerは、呼び出されたときに関数alertMsgを呼び出す関数です。あなたの最初の例と同じ結果を得るために、あなたの目は読む必要があるでしょう:

var alertMsgInvoker = function() { 
     alertMsg ('hi there'); 
} 
function alertMsg (msg) { 
     alert(msg); 
} 

// Now call alertMsgInvoker 
alertMsgInvoker(); 
+0

です。 var alertMsgInvoker = function(){...} equals関数alertMsgInvoker(){...} - 今すぐzjy2004ren – zjy2004ren

+0

@ zjy2004ren - 基本的には、まさにそれ! :) – Rob

3

あなたは第二の例では関数を呼び出すことはありません。 をいくつか定義しますが、決してそれらを呼び出すことはありません。

alertMsgInvokerを定義するときに最初の例ではalertMsgを呼び出します.2番目の例では、alertMsgを呼び出しますが、どちらも呼び出さない関数を定義します。

1

を最初のシナリオでは、あなたが「こんにちは」パラメータで関数ALERTMSG()を呼び出しています。 alert-functionを起動する関数が呼び出されます。この関数は何も返しませんが、引き続き関数の戻り値を変数alertMsgInvokerにバインドします。

2番目のシナリオでは、関数をvariabel alertMsgInvokerに宣言し、alertMsgという関数を宣言します。あなたはここで何の機能も発射しません。そのため、2番目の例ではアラートボックスが表示されません。

+0

最初の例ではアラートが起動しないことは確実ですか? –

+0

私の悪い、変数で宣言された関数。 –

1

最初のシナリオでは、関数alertMsgが呼び出され、未定義が返されます。

var alertMsgInvoker = alertMsg ('hi there'); 
// assign the return value (undefined) to variable alertMsgInvoker 

2番目のケースでは、変数alertMsgInvokerを定義しましたが、それは関数ですが呼び出されることはありません。

関連する問題