この奇妙な振る舞いのために、私のサイトにバグを見つけました。2番目の関数は、「1つ」ではなく「未定義」を警告します。
function test() {
var myParam = "one"
if (false) {
var myParam = "two";
}
alert(myParam);
}
test(); // alert "one"
function testAjax() {
var myParam = "one";
$.ajax({
url: "http://url-to-get-error",
error: function(){
if (false) {
var myParam = "two";
}
alert(myParam);
}
});
}
testAjax(); // alert "undefined"
そして、以下のブロックにコメントすると、「1つ」を正しく警告します。誰かが理由を知っていますか?
if (false) {
var myParam = "two";
}
http://jsfiddle.net/EaW8D/2/を参照してください。
アップデート
みんな、私は問題を解決する方法を知っています、どうもありがとう!
しかし、問題は、jsが決して実行されないブロックに未定義を設定している理由です(if (false)
)。