簡単な答えは、JavaScriptコードがグローバル変数にアクセスするのを防ぐことができないということです。これが「グローバル」と呼ばれ、JSプログラマーが適切なスコープ変数を主張する多くの理由の1つです。
A少し長い答え、
あなたのコードがコメントにあなたが言うことを私はあなたが意味を考えることであるとき、「動作しない」ので、あなたの例では、混乱して「私はこれが動作する必要はありませんが、それがありません」 。
JavaScriptでは、宣言されたスコープを「閉じる」ことができます。
JSランタイムは、現在のスコープ内の変数参照を最初に検索し、参照が見つからない場合は、親スコープ内、親スコープの親など、スコープが見つかるまで変数参照を検索します祖先はいない。最後に、グローバルスコープ(ブラウザーでは、ウィンドウスコープに対応)の参照を検索します。このため、のウィンドウスコープの変数はどこからでもアクセスできます。
変数が参照されているが宣言されていない(の変数キーワードで)変数が自動的にグローバルスコープに作成されるという追加の特徴があります。これが事実でない場合、JSはより良い言語になりますが、それは別の話です。
ビルドしたいテストスイートの種類はわかりませんが、テスト対象のコードで任意のグローバル割り当てを許可しないことで少しのQAを実行する必要があることは確かです。これは最近のベストプラクティス以上のものです。
以前のプロジェクトで使用した方法の1つは、テスト対象のコードを実行してコードをロードした後と実行した後にリストにマッチングする前に、グローバルスコープ内のプロパティを列挙することです。新しいグローバル変数が現れると、自動テストは失敗します。
*とはどういう意味ですか?*動作しません。それはうまくいかないか、本当にうまくいかないのですか? –
私の理想的な状況では、うまくいきません。しかし、それは実際に私がそれを実行するときに動作します。 – mattsven
外部変数またはグローバル変数にアクセスできない何かを定義したいのですか? – Wiseguy