2016-05-01 6 views
1

私は現在、JavaScriptの基本を学んでいます。変数宣言JavaScript:グローバルスペースにvar-keywordを使用しますか?いかなる理由で?

私がこれまで理解していたこと(私がどこか間違っていれば私を修正してください):言語はグローバルスコープと機能スコープの間でのみ区別されます。

関数内では、関数全体の変数を宣言するときにvar-keywordを使用する必要があります。それ以外の場合は、グローバル変数を自動的に宣言します。

しかし、私はとにかくグローバル空間にいるとき:

それはあまりにもそこVAR-キーワードを使用する必要ですか?

つまり、とにかくグローバル変数を宣言します。

varも使用するのは意味がありますか?そしてその場合:どの意味ですか?

+0

グローバル変数を宣言しないことは意味があります。 – zerkms

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode#Converting_mistakes_into_errors – Quentin

答えて

3

少し実験:

window.a = 1; // define global variable 'a' 

console.log(a); // 1 

delete a; // true 

console.log(a); // ReferenceError: a is not defined 

すべてがOKです。しかしvarキーワードでグローバル変数を定義してみましょう:グローバル変数aは、VARで作成された

var a = 1; // define a global variable 'a' 

console.log(a); // 1 

delete a; // false 

console.log(a); // 1, 'a' still exists 

場合は、それを削除することはできません。 varキーワードなしでグローバルスコープで宣言

Read more

+1

正直言って、私は年齢の中で実際のコードで使われている 'delete'を見たことがありません。 –

+0

@JanDvorak Meあまりにも: –

+0

@AliMamedov私はそれが正しいとき:あなたが地球上の空間で変数を宣言した後、もはやそれを取り除く機会はないのですか?関数内では、関数が終了するまで有効期間が制限されます。しかし、地球の中では、理論的には永遠に存在するだろう。 – ts248

2

Javascriptの変数はwindowオブジェクトに添付されます。したがって、それらは削除(およびメモリクリーンアップ)の候補です。

グローバル変数(悪い)を宣言したい場合は、ウィンドウオブジェクトに明示的にアタッチする方が良い(変数がグローバルであるという事実を強調する)。

名前空間の役割を担い、変数が別のスクリプトによって上書きされないようにするグローバルオブジェクトに配置する方がよいでしょう。

関連する問題