2013-06-05 29 views
18

これは私が達成しようとしているものの単純化されたバージョンですが、関数の範囲外の変数を渡したいと思います。私は関数の外で変数を宣言していますが、それを得ることはできません。関数スコープ外の変数へのアクセス

HTML:

<p>5</p> 
<p>6</p> 
<p>7</p> 

JS:

$(document).ready(function() { 
    var gsd = ""; 
    $("p").each(function() { 
     if ($(this).text() === "5") { 
      var gsd = $(this).text(); 
      alert(gsd); // this works 
     } 
    }) 
    alert("get var outside func" + gsd); //does not work 
}); 
+0

はい、Igorの答えは、関数内の変数を「再宣言する」ことが、その時点まで正しかったということです。 – user2232681

答えて

25

あなたは、あなたの関数内に新しい変数としてgsdを再宣言。関数内でgsdの前にvarを削除して、外側スコープのgsdを解決します。

+0

ありがとうございます。シンプルでまっすぐな答え。今、私は分かる。 – user2232681

+1

'gsd'はグローバルではありません... – Ian

+0

@Ian - right、" global "は" outsideスコープ "である必要があります – Igor

関連する問題