内部のいくつかの変数にアクセスするにはどうすればよいですか
$(document).ready(function(){
var foo=0;
var bar = 3;
});
グーグルクロームコンソールから?alert(foo)を試してみると、定義されていないというメッセージが表示されます。
内部のいくつかの変数にアクセスするにはどうすればよいですか
$(document).ready(function(){
var foo=0;
var bar = 3;
});
グーグルクロームコンソールから?alert(foo)を試してみると、定義されていないというメッセージが表示されます。
デバッガーでブレークポイントを設定します。デバッガーが停止すると、それらに完全にアクセスできるようになります。
それらをグローバルスコープに入れるように指示する他の回答は悪いです。適切なツールの使用方法がわからないという理由だけで、悪い習慣を使用しないでください。
これらの変数は機能クロージャ内で定義されているため、これらの変数にアクセスすることはできません。それを行うことができる唯一の方法は、関数のスコープ外でそれらへのグローバル参照を作成した場合です。
var foo, bar;
$(document).ready(function(){
foo = 0;
bar = 3;
});
適切な公開変数を実行してみませんか?
$(document).ready(function(){
var foo=0;
var bar = 3;
$.exposed = {
foo: foo,
bar: bar
}
});
を実行して変数を確認します
console.log($.exposed.bar)
クロージャースペースにいるのでできません。ここでは、クロージャがどのように機能するかを説明します(JavaScriptクロージャはどのように機能しますか?)。$(document).ready
変数にアクセスするには、関数内にブレークポイントを設定するだけです
コードのさまざまな部分からこれらの変数にアクセスする必要がある場合(たとえば、ドキュメントの準備ができた状態で初期化し、他の場所でアクセスする場合など)、関数クロージャの外部で宣言する必要があります。
これが事実である場合に限り、私はグローバルスペースを乱雑にするのが好きではありません。そのためにベースオブジェクトを使用することをお勧めします:
var myObj = {};
$(function() {
myObj.foo = 0;
myObj.bar = 3;
});
ドキュメントがロードされた後にのみ設定されることに注意してください!したがって、ブロックalert(myObj.foo);
の直後の(または同様の)場所$(function() { ... });
は降伏しundefined
ます!
そのコンテキスト内でのみアクセスする必要がある場合は、関数外で何も宣言しないでください。そして、他の方法でコードをデバッグしてみてください。たとえば、クロムを使用するconsole.log
と、非常に役立ちます。
$(document).ready(function(){
window.foo=0;
window.bar = 3;
});
それらの変数をグローバルスコープに公開します(実際にはお勧めしません)
$(document).ready()の外部でそれらを定義してから、内部でもそれらにアクセスします。
var foo = 0, bar = 3;
$(document).ready(function(){
alert(foo);
});
実際、それを回避するためのハックな方法があります。おそらくそれを使うべきではありません。ブレークポイントを設定します。そうは言っても、コードは次のとおりです。
$(document).ready(
readyClosure = function(access){
var x = 5;
return eval(access);
}
);
readyClosure('x'); // returns 5