ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのvar、let、constの違いは何ですか?

JavaScriptのvar、let、constの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2020-11-13 10:54:4916215ブラウズ

違い: 1. var で宣言された変数は関数スコープに属しますが、let と const で宣言された変数はブロックレベルのスコープに属します; 2. 変数のプロモーションは var には存在しますが、let と const には存在しません; 3. Var 変数は繰り返し宣言できますが、同じブロックレベルのスコープ内では let 変数を再宣言したり、const 変数を変更したりすることはできません。

JavaScriptのvar、let、constの違いは何ですか?

推奨チュートリアル: 「JavaScript ビデオ チュートリアル

ES6 (ES2015) が登場する前の JavaScript での変数の宣言関数の宣言は var キーワードのみで、関数の宣言は function キーワードで行われます。ES6 以降では、宣言方法には var、let、const、function、class が含まれます。この記事では主に var、let、const の違いについて説明します。

var について

#キーワード var を使用して変数を宣言すると、その変数は現在の関数スコープに属します。関数宣言の場合、この変数はグローバル スコープに属します。例:

var a = 1; //此处声明的变量a为全局变量
function foo(){
   var a = 2;//此处声明的变量a为函数foo的局部变量
   console.log(a);//2
}
foo();
console.log(a);//1

変数を宣言するときに var を省略すると、その変数はグローバル変数になり、変数がグローバル スコープに存在する場合、その値は更新されます。例:

var a = 1; //此处声明的变量a为全局变量
function foo(){
   a = 2;//此处的变量a也是全局变量
   console.log(a);//2
}
foo();
console.log(a);//2

注: var で宣言された変数はホイストの対象となります。

「プロモーション」について

プロモーションとは、var がスコープ内のどこに出現しても、このステートメントは現在のスコープ全体に属し、スコープ内のどこにでもアクセスできることを意味します。変数宣言のみがプロモートされ、変数への代入はプロモートされないことに注意してください。次の例に示すように:

console.log(a);//undefined
var a = 1;

このコード セグメントは、次のコード セグメントと同じロジックを持っています:

var a;
console.log(a);//undefined
a = 1;

宣言されていない変数が操作されると、エラーが報告されます

console.log(b);//假设b未声明过,Uncaught ReferenceError: b is not defined

let を理解する

let で宣言された変数には次の特性があります:

  • let で宣言された変数にはブロックの特性があります範囲。

  • #同じブロックレベルのスコープ内では、変数を繰り返し宣言することはできません。

  • let で宣言された変数の変数プロモーションはありません。つまり、let 宣言には一時的なデッド ゾーン (TDZ) が存在します。

次の例に示すように、

let a = 1;
console.log(a);//1
console.log(b);//Uncaught ReferenceError: b is not defined
let b = 2;
function foo(){
    let a = 1;
    let a = 2;//Uncaught SyntaxError: Identifier 'a' has already been declared
}
次は、var と let の典型的な例です。

for (var i = 0; i < 10; i++) {
    setTimeout(function(){
        console.log(i);
    },100)
};
コードの実行後、10 10 秒がコンソールに表示されます。

for (let i = 0; i < 10; i++) {
    setTimeout(function(){
        console.log(i);
    },100)
};
に変更すると、コードの実行後、0 ~ 9 がコンソールに表示されます。

const を理解する

const宣言メソッドは、上記のletの特徴に加えて、constで定義した変数は一度定義すると変更できない、つまりconstで宣言したものが定数であるという特徴もあります。

例:

const a = 1;
console.log(a);//1
a = 2;
console.log(a);//Uncaught TypeError: Assignment to constant variable.
ただし、const で宣言された変数の内部内容が不変であるという意味ではありません。たとえば、次のようになります。

const obj = {a:1,b:2};
console.log(obj.a);//1
obj.a = 3;
console.log(obj.a);//3
つまり、正確には、 const 宣言は、読み取り専用の参照値を作成します。ただし、それは保持する値が不変であるという意味ではなく、変数識別子を再割り当てできないというだけです。

相違点の概要

  • var で宣言された変数は関数スコープに属しますが、let と const で宣言された変数はブロック レベルに属します。 scope;

  • var には変数昇格現象がありますが、let と const にはそのような現象はありません;

  • var 変数は繰り返し宣言できますが、同じブロックレベルのスコープ内では、let 変数を再宣言したり、const 変数を変更したりすることはできません。

プログラミング関連の知識について詳しくは、

プログラミング教育をご覧ください。 !

以上がJavaScriptのvar、let、constの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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