変数のスコープについて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 全体でクレイジーなことが起こっています。
教訓: 変数のスコープを設定します。変数を理解します。あなたの変数を愛してください。