6

ページロード時に変数を設定しました

$(document).ready(function() {
  var inv_count = 3;
  });

ただし、関数内でその変数を参照しようとすると、機能しません。

function blah(a,b) {
   alert (inv_count);
   }

どうしてこれなの?そして、どうすればそれを回避できますか?

(新人はこちら)

4

2 に答える 2

13

スコープの問題があります。javascript を大幅に改善できるため、それについて少し読むことをお勧めしますが、2 つの一般的な方法で解決できます。

var inv_count; //you declare your variable in a global scope, it's not very good practice
$(document).ready(function() {
    inv_count = 3;
});
function blah(a,b) {
   alert (inv_count);
}

また

$(document).ready(function() {
    var inv_count = 3;

    function blah(a,b) {
      alert (inv_count);
    }
    //you declare everything inside the scope of jQuery, if you want to acess blah outside use:
   //window.blah = blah;
});

また、クロージャーがどのように機能するのかわからない場合は、クロージャーについて読むことをお勧めします。

于 2012-04-05T17:19:11.597 に答える
11

関数内で変数を宣言すると、変数名はその関数のスコープ外ではアクセスできなくなります。宣言を関数の外に移動します。

var inv_count;
$(document).ready(function() {
    inv_count = 3;
});
于 2012-04-05T17:15:45.483 に答える