奇妙な問題に気づきました。
このjQueryを見てください:
$(function(){
status = 1;
status1 = 2;
$('body').append(status+' - '+status1);
});
ご覧のとおり、出力は次のとおりです。
- 2
status
では、JavaScript または jQuery のシステム var はありますか?
そして、このような他の変数はありますか?
奇妙な問題に気づきました。
このjQueryを見てください:
$(function(){
status = 1;
status1 = 2;
$('body').append(status+' - '+status1);
});
ご覧のとおり、出力は次のとおりです。
- 2
status
では、JavaScript または jQuery のシステム var はありますか?
そして、このような他の変数はありますか?
JavaScript にはグローバル変数があり、ブラウザーでは、グローバル変数はグローバル オブジェクトのプロパティですwindow
。
現在、window
それ自体にいくつかの事前定義されたプロパティがあり、 [MDN]のように読み取り専用のプロパティもあります (これもブラウザごとに異なる可能性があります!)。したがって、そのような名前でグローバル変数を作成すると失敗します (変数は既に存在しますが、新しい値を割り当てることはできません)。window.status
事前定義されたプロパティのリストは、MDN ドキュメントにあります。
これが、グローバル変数を避けるべき理由の 1 つです。ローカル変数を使用する場合 (変数を宣言しvar
、必要に応じてすべてのコードを関数に入れることにより)、この問題は発生しません。
(function() {
var status = 'foo';
// ....
}());
グローバル オブジェクトには、ブラウザ下部のステータス バーにテキストを設定するために使用されるwindow
というプロパティがあります。status
var
キーワードを使用しないと、参照するようにこのプロパティが上書きされますwindow.status
。dom.disable_window_status_change
どうやら Firefox では、ユーザーが設定を に設定していない限り、これを変更することはできませんfalse
。
ドキュメントについてはこのリンクを参照してください。すべての「グローバル」プロパティのリストについては、このリンクを参照してください。
また、JS には予約語と見なされる単語がいくつかあるため、ローカル スコープであっても、これらの を使用しないでください。