内部のいくつかの変数にどのようにアクセスできますか
$(document).ready(function(){
var foo=0;
var bar = 3;
});
googleからchrome console?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
関数内にブレークポイントを設定するだけです
reallyがコードのさまざまな部分からこれらの変数にアクセスする必要がある場合(たとえば、ドキュメントで初期化してから、他の場所にアクセスするなど)、次にそれらを関数クロージャの外で宣言する必要があります。
そうである場合にのみ、私はグローバルスペースを雑然とするのが好きではありません。そのためにベースオブジェクトを使用することをお勧めします:
_var myObj = {};
$(function() {
myObj.foo = 0;
myObj.bar = 3;
});
_
注これらは、ドキュメントが読み込まれたときにのみ設定されます!したがって、alert(myObj.foo);
ブロックの直後に$(function() { ... });
(または類似の何か)を配置すると、undefined
!
そのコンテキスト内でのみアクセスする必要がある場合は、しないでください関数の外部で何かを宣言します。そして、他の方法でコードをデバッグしてみてください。たとえば、Chromeでは_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