ホームページ >ウェブフロントエンド >jsチュートリアル >Javascriptの宣言時に「var」を使う場合と使わない場合の違い_基礎知識

Javascriptの宣言時に「var」を使う場合と使わない場合の違い_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:37:041112ブラウズ

JavaScript で変数を宣言する場合、var キーワードを付けても付けなくても実行に問題はありませんが、2 つの方法には依然として違いがあります。コードが機能するからといって、それが良いコードであるとは限りません。

var num = 1;

は、現在のドメインで変数を宣言します。メソッドで宣言されている場合はローカル変数であり、グローバル ドメインで宣言されている場合はグローバル変数です。

そして num = 1;

実際には、これは属性の割り当て操作です。まず、現在のスコープ チェーンで num を解決しようとします (メソッドで宣言されている場合、現在のスコープ チェーンはグローバル スコープとメソッドのローカル スコープなどを表します)。 num が現在のスコープ チェーンで見つかった場合は、 num 属性が実行されます。num が見つからない場合は、グローバル オブジェクト (つまり、ウィンドウ オブジェクトなど、現在のスコープ チェーンの最上位オブジェクト) に num 属性が作成され、値が割り当てられます。

注意!グローバル変数は宣言しませんが、グローバル オブジェクトのプロパティを作成します。

そうは言っても、ここでの「変数の宣言」と「オブジェクトのプロパティの作成」の違いを理解するのはまだ難しいかもしれません。実際、JavaScript の変数宣言、属性の作成、各 Javascript の各属性には、読み取り専用 (ReadOnly)、列挙不可能 (DontEnum)、削除不可能 (DontDelete) など、属性を説明するための特定の記号があります。待って。

変数宣言に削除不可属性があるため、var num = 1とnum = 1を比較します。前者は削除不可属性を持つ変数宣言であるため、後者は削除できません。グローバル変数なので、グローバル変数から削除できます。

詳細については、次のコードを参照してください:

コードをコピー コードは次のとおりです:
// num1 はグローバル変数、num2 はグローバル変数です。ウィンドウのプロパティ
の 1 つです var num1 = 1;

num2 = 2;

//削除できません

// num2 を削除します。

関数モデル(){

var num1 = 1; // ローカル変数

num2 = 2; // ウィンドウの属性

// 匿名関数

(function(){

var num = 1; // ローカル変数

num1 = 2;

num3 = 3; // ウィンドウの属性

}

}

追記: ECMAScript5 標準には、「厳密モード」があります。厳密モードでは、宣言されていない識別子に値を割り当てると参照エラーがスローされるため、グローバル変数属性が誤って作成されることが防止されます。現在、一部のブラウザの新しいバージョンではすでにサポートされています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。