2016-10-14 21 views
2

これらのステートメントはW3Schoolsで見つかりました。JavaScriptのグローバル変数とウィンドウ変数は何ですか?

JavaScriptを使用すると、グローバルなスコープは完全なJavaScript環境です。 HTMLでは、グローバルスコープはウィンドウオブジェクトです。 すべてのグローバル変数はウィンドウオブジェクトに属します。 グローバル変数(または関数)はウィンドウ変数(または関数)を上書きできます。

これらのステートメントは、グローバル変数とウィンドウ変数が基本的に同じであることを意味しませんか? また、別のウィンドウからウィンドウ変数にアクセスすることはできますか?それはウィンドウオブジェクトに関連付けられているか、別のウィンドウに移動すると削除されるウィンドウオブジェクトですか?

、あまりにもこの1:ウィンドウオブジェクトを含む

任意の関数は、グローバル変数や関数を上書きすることができます。

および関連例:

<p> 
In HTML, all global variables will become window variables. 
</p> 

<p id="demo"></p> 

<script> 
var carName = "Volvo"; 

// code here can use window.carName 
document.getElementById("demo").innerHTML = "I can display " + window.carName; 
</script> 

ウィンドウオブジェクト/変数とどのようにそれがグローバルオブジェクト/変数の違いは何ですか?

私は本当に混乱しています。誰もが例を使ってこれを詳しく説明できますか?

+3

については

:http://stackoverflow.com/questions/3473946/what-is-the-difference-between -window-window-top-and-window-parent – Rajesh

+1

これはw3schoolsの部分では不完全で不幸な言葉遣いの問題だと思います。彼らが言っていることは、言語としてのJavascriptは「グローバルなコンテキスト」という概念を持っているということです。 JavascriptがWebページなどの*特定のコンテキストに関連付けられている場合、そのグローバルコンテキストはウィンドウオブジェクトに関連付けられます。 Javascriptを使用する異なる環境では、グローバルスコープがドメイン固有の方法で公開される可能性があります。 –

+4

本当に、Jsを学ぶためにW3Schoolsを避けてください。 – Bergi

答えて

2

すべてのJavaScriptコードは、いくつかの環境で、最も一般的にはブラウザで実行されます。実行するコードは、グローバルコンテキストまたはグローバルスコープと呼ばれる「ルート」スコープで実行する必要があります(これをメインコンテナと見なします)。ブラウザでは、この「ルート」スコープはウィンドウオブジェクト(タブ/ページ/ iframeごとに一意のウィンドウオブジェクト)です。

この例では、変数がグローバルスコープvar carName = "Volvo";で宣言されたときに、ウィンドウオブジェクトwindow.carNameでこの変数にアクセスできます。なぜなら、 'window'オブジェクトとグローバルオブジェクトを参照するからです。

たとえばNodeを使用してjavascriptを実行すると、グローバルオブジェクトの名前はglobalになります。var carName = "Volvo";を宣言するとその環境にはglobal.carNameを使用してアクセスすることもできます。詳述すると

var myObject = { }; 
myObject.myVariable = 1; 
console.log(myObject.myVariable); // logs 1 

myVariableはこれが明示的に行われ、myObjectという上に作成されます。

var myVariable = 1; // behind the scenes this declerations is doing window.myVariable = 1; 
console.log(window.myVariable); // logs 1 

myVariableは、暗黙のうちにブラウザのコンテキストでグローバルオブジェクトであるwindowオブジェクト上に作成されます。

これが状況を明確にすることを希望します。これは役立つはず、多分、より良い説明私は強く、特にこの問題のために、この本のシリーズhttps://github.com/getify/You-Dont-Know-JS をお勧めしますhttps://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/README.md#you-dont-know-js-scope--closures

関連する問題