JavaScript における var、let、const の違いの詳細な説明

JavaScript における var、let、const の違いの詳細な説明

JavaScriptで変数を宣言する方法としては、 varletconstがあります。 letconst es6で追加された新しいコマンドです。では、それらの違いは何でしょうか?

まずは、3つの違いについて全体的に見ていきましょう。詳しく紹介する前に、var、let、constの違いを主に以下の点から分析します。

  • グローバル変数として使用した場合の違い
  • 可変巻上げ
  • 一時的なデッドゾーン
  • ブロックスコープ
  • 重複したステートメント
  • 宣言された変数を変更する

グローバル変数として

ES5では、トップレベルオブジェクトのプロパティはグローバル変数と同等です。var var宣言された変数は、グローバル変数であると同時にトップレベル変数のプロパティでもあります。

ただし、 ES6letで宣言された変数はグローバルにアクセス可能ですが、トップレベル変数のプロパティとしてはアクセスできません。また、 constで宣言された定数もトップレベル変数では使用できません。

画像の説明を追加してください

可変ホイスト

varで宣言された変数は昇格され、宣言される前に変数を呼び出すことができ、値は未定義です。

letconstには変数の昇格はありません。つまり、宣言した変数は宣言後に使用する必要があります。そうでない場合はエラーが報告されます。

 console.log(a) // undefinedvar a = 1console.log(b) // 初期化前に 'b' にアクセスできませんlet b = 2console.log(c) // 初期化前に 'c' にアクセスできませんconst c = 3console.log(a) // undefined
変数a = 1

console.log(b) // 初期化前に 'b' にアクセスできません
b = 2とする

console.log(c) // 初期化前に 'c' にアクセスできません
定数c = 3

一時的なデッドゾーン

var一時的なデッドゾーンはありません

letconstには一時的なデッドゾーンがあります。変数は、変数を宣言するコード行が実行された後にのみ取得および使用できます。

実は、これは前回の変数改善から拡張された差です。 varで宣言された変数は昇格されるため、宣言前に変数値がundefinedであってもエラーは報告されず、一時的なデッドゾーンは発生しません。スコープの開始前または開始後、変数または定数が宣言される前にletまたはconstを使用すると、エラーが報告されます。この領域は一時的なデッド ゾーンとも呼ばれます。

同上:

 console.log(a) // 未定義
変数a = 1

console.log(b) // 初期化前に 'b' にアクセスできません
b = 2とする

console.log(c) // 初期化前に 'c' にアクセスできません
定数c = 3

ブロックスコープ

varブロックスコープ内に存在しません

letconstはブロックスコープを持つ

{ var a = 2}console.log(a) // 2{ let b = 2}console.log(b) // キャッチされない ReferenceError: b は定義されていません{ const c = 2}console.log(c) // キャッチされない ReferenceError: c は定義されていません

重複したステートメント

var同じスコープ内で繰り返し宣言することができ、後で宣言された変数は前の変数宣言を上書きします。

letconst同じスコープ内で繰り返し宣言することはできません

変数a = 10
var a = 20 // 20

b = 10とする
let b = 20 // 識別子 'b' はすでに宣言されています

定数c = 10
const c = 20 // 識別子 'c' はすでに宣言されています

宣言された変数(定数と変数宣言)を変更する

varlet変数を宣言し、宣言された変数は変更できる。

const読み取り専用の定数を宣言します。一度宣言すると、定数の値は変更できません。ただし、参照データ型の場合、 JavaScriptの変数または定数はデータの保存アドレスを格納することに注意してください。定数の参照が直接変更されない限り、定数が指すオブジェクトのプロパティを変更することは可能です。

変数a = 10
= 20 です
コンソールログ(a) // 20

b = 10とする
20 です
コンソール.log(b) // 20

定数c = 10
c = 20 // キャッチされない TypeError: 定数変数への代入

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScriptのvar let constの違いは何ですか?
  • JavaScript es6 における var、let、const の違いの詳細な説明
  • JavaScript の var と ES6 仕様の let と const の違いと使い方を詳しく解説
  • JavaScript の let、var、const キーワードの違いを理解する
  • JavaScript ES6 構文における let、const、var の違い

<<:  CSS3で作られたレインボーボタンスタイル

>>:  ウェブサイトのフロントエンドパフォーマンスの最適化: JavaScript と CSS

推薦する

MySQL マスタースレーブレプリケーションスレッドの状態遷移に関する詳細な理解

序文MySQL マスター スレーブ レプリケーションの基本原理は、スレーブ データベースがマスター ...

MySQL の日付型の単一行関数コードの詳細な説明

MySQL の日付型単一行関数: CURDATE()またはCURRENT_DATE()は現在の日付を...

MySQL 変数宣言とストアド プロシージャの分析

変数の宣言グローバル変数の設定@a='新しい変数' を設定します。関数やストアドプロ...

React antdはフォームの動的な増減を実現します

以前、動的フォームを記述しているときに落とし穴に遭遇しました。インデックスの添え字をキーとして使用す...

JSON.stringify を使用する際に発生する循環参照の問題を解決する方法の詳細な説明

プログラマーが日常的に TypeScript/JavaScript 開発を行う場合、複雑な Java...

Linux で固定 IP を設定する方法 (テスト済みで効果的)

まず、仮想マシンを開きます xshell5 を開いて仮想マシンに接続します (より便利です。Linu...

docker.service 起動エラーの詳細なトラブルシューティング

エラーを報告するには次のコマンドを実行しますsystemctl dockerを再起動しますエラーメッ...

ウェブページを白黒に変換します(Google、Firefox、IE、その他のブラウザと互換性があります)

CSSファイルに書き込むコードをコピーコードは次のとおりです。 01.html {グレイスケール(1...

IISMonitor を使用して Web ページを監視し、IIS を自動的に再起動します。

目次1. ツールの紹介2. ワークフロー3. 操作インターフェースとパラメータ設定(1)監視と再起動...

JavaScript 配列を走査する 5 つの方法

目次1. forループ: 基本的でシンプル2. forEach() メソッド: コールバック関数の使...

Vue検証コードコンポーネントの使い方の詳しい説明

この記事の例では、vue検証コードコンポーネントで使用される具体的な実装コードを参考までに共有してい...

Alibaba Cloudのセキュリティルール設定の詳細な説明

2日前、ダブル11ショッピングフェスティバルを利用して、Alibaba CloudでECS(サーバー...

JavaScriptタイマーの詳細な説明

目次簡単な紹介間隔の設定説明するパラメータ戻り値使用法タイムアウトの設定説明するパラメータ使用法:タ...

WeChatアプレットがSMS認証コード送信のカウントダウンを実装

この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...

デプロイから基本操作までDocker Swarm

Docker SwarmについてDocker Swarm は次の 2 つの部分で構成されます。 D...