javascript_javascript スキルで var を追加する場合と追加しない場合の違いを本当に理解していますか?

WBOY
リリース: 2016-05-16 15:21:27
オリジナル
1861 人が閲覧しました

JavaScript は ECMAScript 標準に準拠した製品であり、当然のことながら ECMAScript 標準に準拠する必要があります。

まず var キーワードの定義と使用法を見てみましょう

var ステートメントは変数を宣言するために使用されます。

JavaScript 変数の作成は、変数の「宣言」とも呼ばれます:

コードをコピーします コードは次のとおりです:

var carName;

変数が宣言された後、その変数は空になります (値がありません)。

変数をコピーします。操作は次のとおりです:

コードをコピーします コードは次のとおりです:

carName = "ボルボ";

変数を宣言するときに、変数に値を代入することもできます。

コードをコピーします コードは次のとおりです:

var carName = "ボルボ";

文法

コードをコピーします コードは次のとおりです:

var varname = 値;

パラメータ値

です。
パラメータ 説明
変数名 必須です。変数名を指定します。

変数名には、文字、数字、アンダースコア、ドル記号を含めることができます。

  • 変数名は文字で始める必要があります
  • 変数名は $ と _ で始めることもできます (ただし、通常はこのようには使用されません)
  • 変数名では大文字と小文字が区別されます (y と Y は異なる変数です)
  • 予約語 (JavaScript キーワードなど) は変数名として使用できません
オプション。変数の値を指定します。

注: 変数宣言で値が指定されていない場合、デフォルト値は 未定義

誰もが多くの記事を読んでいますが、グローバル変数の暗黙的な宣言を避けるようにと述べています。つまり、変数を宣言する前に 'var' を追加する必要があります。では、'var' を追加する場合と追加しない場合の違いは何でしょうか。 ?

まずコードを見てみましょう

var a = 'aa';
alert(a); //弹出 'aa'
alert(window.a)//弹出'aa' 
ログイン後にコピー

グローバル変数を宣言すると、実際には「window」オブジェクトに属性を追加することになります。次のコードでも同じ効果があります

a = 'aa';
alert(a); //弹出 'aa'
alert(window.a)//弹出'aa' 
ログイン後にコピー

では、"var a = 'aa' " と "a = 'aa' " はどちらもグローバル変数ですが、違いは何でしょうか? 次の 2 つのコードを見てください

var a = 'aa';
delete window.a; // false 
a = 'aa';
delete window.a; // true 
ログイン後にコピー

それらはすべて「window」オブジェクトに属性を追加します。1 つは削除できますが、もう 1 つは削除できません。ただし、「var」を追加すると、スコープが関連付けられます。「var」を使用しないと、常に属性が「window」オブジェクトに動的に追加されます。

var test = function(){
 a = 'aa';
}
test();
alert(window.a);//弹出'aa' 
ログイン後にコピー

window オブジェクトはグローバル オブジェクトであるため、デフォルトで省略できます。次の段落も同じ効果があります。

var test = function(){
 a = 'aa';
}
test();
alert(a);//弹出'aa' 
ログイン後にコピー

そう言えば、真剣に考えている学生は、なぜ暗黙的に宣言されたグローバル変数は削除できるのに、明示的に宣言されたグローバル変数は削除できないのかという疑問を抱いているはずです。

その理由は、「構成可能性が false のプロパティを削除することはできない」ためです。変数宣言や関数宣言によって作成されたグローバル オブジェクトのプロパティなど、一部の組み込みオブジェクトのプロパティは構成可能ではありません。

delete Object.prototype; // false 不可删除,该属性是不可配置的
var a = 'aa';
delete window.a;//false 不可删除,该属性是不可配置的
function test(){};
delete window.test;//false 不可删除,该属性是不可配置的 
ログイン後にコピー

では、「var」を使用して宣言されたグローバル変数は、実際には「window」オブジェクトに構成不可能な属性を追加する一方、「var」なしで宣言されたグローバル変数は、実際には構成不可能な属性を「window」オブジェクトに追加するということを理解していませんか? 'window' オブジェクト。設定可能なプロパティが 'window' オブジェクトに追加されます。

上記で window が使用されている場合はどこでも、window を次のように置き換えることができることに注意してください:

var test = function(){
 a = 'aa';
}
test();
alert(this.a);//弹出'aa' 
ログイン後にコピー

その理由については、以前書いた記事をご確認ください「これ、これ、JavaScriptでもう一度議論、超包括的」

以下では、JavaScript の var キーワードを取り出して、個別に説明します。

変数を定義するときは、Var キーワードを使用する必要があることがわかっています。Var キーワードを使用する場合は、その使用法に注意する必要があります。
次の例は、Var を使用する場合と使用しない場合、およびグローバル変数とローカル変数が定義されている場合に実行結果が異なることを十分に示しています。

var var01 = 1;
function funtest() {
 document.write(var01);
 var var01 = 0;
} 
ログイン後にコピー

結果は次のようになります: 未定義

var var01 = 1;
function funtest() {
 document.write(var01);
 var01 = 0;
} 
ログイン後にコピー

結果は: 1

 var01 = 1;
function funtest() {
 document.write(var01);
 var var01 = 0;
}
ログイン後にコピー

結果は次のようになります: 未定義

var01 = 1;
function funtest() {
 document.write(var01);
 var01 = 0;
}
ログイン後にコピー

結果は: 1

JavaScript の var についてどれだけ知っているかをここで確認してください。この記事を通じて誰もが何かを得ることができると思います。 JavaScript var についてさらに詳しく知りたい場合は、引き続きこのサイトに注目してください。ありがとうございます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート