ホームページ > 記事 > ウェブフロントエンド > JavaScriptのvar、let、constの違いは何ですか?
違い: 1. var で宣言された変数は関数スコープに属しますが、let と const で宣言された変数はブロックレベルのスコープに属します; 2. 変数のプロモーションは var には存在しますが、let と const には存在しません; 3. 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 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 宣言は、読み取り専用の参照値を作成します。ただし、それは保持する値が不変であるという意味ではなく、変数識別子を再割り当てできないというだけです。
相違点の概要
プログラミング教育をご覧ください。 !
以上がJavaScriptのvar、let、constの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。