1

奇妙な問題に気づきました。

このjQueryを見てください:

$(function(){
    status = 1;
    status1 = 2;

    $('body').append(status+' - '+status1);
});

フィドル

ご覧のとおり、出力は次のとおりです。

- 2

statusでは、JavaScript または jQuery のシステム var はありますか?

そして、このような他の変数はありますか?

4

2 に答える 2

8

JavaScript にはグローバル変数があり、ブラウザーでは、グローバル変数はグローバル オブジェクトのプロパティですwindow

現在、windowそれ自体にいくつかの事前定義されたプロパティがあり、 [MDN]のように読み取り専用のプロパティもあります (これもブラウザごとに異なる可能性があります!)。したがって、そのような名前でグローバル変数を作成すると失敗します (変数は既に存在しますが、新しい値を割り当てることはできません)。window.status

事前定義されたプロパティのリストは、MDN ドキュメントにあります。


これが、グローバル変数を避けるべき理由の 1 つです。ローカル変数を使用する場合 (変数を宣言しvar、必要に応じてすべてのコードを関数に入れることにより)、この問題は発生しません。

(function() {
    var status = 'foo';
    // ....
}());
于 2013-04-11T11:02:21.673 に答える
3

グローバル オブジェクトには、ブラウザ下部のステータス バーにテキストを設定するために使用されるwindowというプロパティがあります。status

varキーワードを使用しないと、参照するようにこのプロパティが上書きされますwindow.statusdom.disable_window_status_changeどうやら Firefox では、ユーザーが設定を に設定していない限り、これを変更することはできませんfalse

ドキュメントについてはこのリンクを参照してください。すべての「グローバル」プロパティのリストについては、このリンクを参照してください。

また、JS には予約語と見なされる単語がいくつかあるため、ローカル スコープであっても、これらの を使用しないでください。

于 2013-04-11T11:08:33.867 に答える