少し前に、変数を定義するときにキーワード var を使用する場合と使用しない場合の違いについての質問に答えました。それを要約しましょう。
1. 関数スコープでは、var を使用して定義された変数はローカル変数、var を使用せずに定義された変数はグローバル変数になります。
var 定義を使用します:
var a = 'hello World'; function bb(){ var a = 'hello Bill'; console.log(a); } bb() //'hello Bill' console.log(a); //'hello world'
var 定義を使用しないでください:
var a = 'hello World'; function bb(){ a = 'hello Bill'; console.log(a); } bb() //'hello Bill' console.log(a); //'hello Bill'
2. グローバル スコープでは、var を使用して定義された変数は削除できませんが、var を使用せずに定義された変数は削除できます。これは、暗黙的なグローバル変数は厳密には実際の変数ではなく、グローバル オブジェクトの属性であるためです。 delete で削除できますが、変数は削除できません。
3. var を使用して変数を定義すると、変数宣言も促進されます。つまり、
var 定義を使用します:
function hh(){ console.log(a); var a = 'hello world'; } hh() //undefined
var 定義を使用しないでください:
function hh(){ console.log(a); a = 'hello world'; } hh() //'a is not defined'
あらかじめvarで定義した変数の宣言です。
4. ES5 の「use strict」モードでは、変数が var を使用して定義されていない場合、エラーが報告されます。