2016-04-28 8 views
0

これはなぜ機能しないと私にそれを動作させる方法を示す誰かが私に説明することはできますか?私は名前空間とIIFEの関数を作成しようとしましたが、それを得ることはできません。

$(document).ready(function() { 
    alert (hi); 
}); 

$(document).ready(function() { 
    var hi = "hello" 
}); 

ありがとうございます!

答えて

4

あなたが行う場合は、この:

$(document).ready(function() { 
    var hi = "hello" 
}); 

あなたはそのコールバック関数に対してローカルなhiという名前の変数を作成しています。その機能の外ではアクセスできません。これは言語の特徴です。

あなたはこのような高いスコープで変数を宣言することができます。

var hi; 
$(document).ready(function() { 
    hi = "hello" 
}); 

そして、その変数の値が範囲外で利用できるようになりますが、それは適切な値を取得するときに、必ずしも知ることができませんそのコールバックの中にコードを置かない限り、$(document).ready()コールバックがいつ呼び出されるのか分からないからです。


$(document).ready()への2回の呼び出しの間で変数を共有しようとするのは、ほとんど意味がありません。あなたはには2回の呼び出しの間の変数を共有しようとするつもりだった場合は本当に

推奨しない

$(document).ready(function() { 
    var hi = "hello" 
    alert (hi); 
}); 

:それはちょうど同じ$(document).ready()コールバック内のコードを配置するためにはるかに理にかなって$(document).ready()(あなたのコードはやや壊れやすいので、私は本当にお勧めしません)、それを行うことができます。これはhiの値を設定する第1 $(document).ready()コールバックが第二の前に最初に呼び出されることを確認します

var hi; 
$(document).ready(function() { 
    hi = "hello" 
}); 

$(document).ready(function() { 
    alert (hi); 
}); 

$(document).ready()へのコールバックは、あなたが適切なものを注文する必要がありますので、それらが結合しているために呼び出されます1つは値を使用しようとする場所です。

+0

私は投票したと思っていた甘いです。 – BlunderCode

+0

@ jfriend00チェック – BlunderCode

関連する問題