変数のスコープについて30 90 秒
$(document).ready(function(){
var someVar = $("non_existing_element");
});
この時点でsomeVar
、実際には equal[]
です。したがって、次のように書くとします。
$(document).ready(function(){
var someVar = $("non_existing_element");
console.log("the value of someVar is", someVar);
});
コンソールに表示されます
someVar の値は [] です
万歳!
しかし!
最後の中括弧を通過するとすぐに...
$(document).ready(function(){
var someVar = $("non_existing_element");
}); // <<<<< This one
で定義された関数を残しましたfunction() {}
。これには名前がないため、無名関数と呼ばれることに注意してください。政治や経済への復讐はありませんのでご安心ください。
関数を終了すると、 で定義された変数にvar
アクセスできなくなります。これは、まったく別の会話であるスコープ リークを防ぐためです。これについては、すぐに学習できると思います。なしで定義してみてくださいvar
。何が起こるか見てください。
使用しないvar
と、変数は惨めな匿名関数のクラッチから逃れることができ、グローバルスコープ全体で自分自身をがらくたにすることができます。(ちなみに、これは からアクセスできますwindow.global_variable
)
したがって、コンソールに変数を入力すると (ブレークポイントを使用している場合は適用されません)、変数はグローバル スコープから読み取られます。これは、関数内にいないためです。そして、変数のスコープをあなたが入っていない関数に限定していることを発見したvar
ので、それが未定義である理由がわかりました。
checkbox
つまり、 !という名前の変数が 1 つしかない場合を想像してみてください。入れたすべての Javascript プラグインは、互いに競合します。何checkbox
があったかは誰にもわかりません。気が付くと、DOM 全体でクレイジーなことが起こっています。
教訓: 変数のスコープを設定します。変数を理解します。あなたの変数を愛してください。