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

推薦する

DockerはホストのMysql操作に接続します

今日、会社のプロジェクトでは docker を設定する必要があります。Windows に正常にインス...

海外のウェブページのカラーマッチング事例20選共有

この記事では、優れた Web ページのカラー マッチングの事例を 20 件集めて紹介します。これらの...

最小限のルートファイルシステムを構築するためにbusyboxを移植するための詳細な手順

Busybox: 小さなコマンドが詰まったスイスアーミーナイフ。ステップ1: ディレクトリ構造を作成...

MySQLトリガーの使用と理解

目次1. トリガーとは何ですか? 2. トリガーを作成するトリガーを作成するための構文は次のとおりで...

インタラクティブな視覚化 JS ライブラリ gojs の使い方の紹介とヒント

目次1. gojsの紹介2. Gojsのアプリケーションシナリオ3. gojs を選ぶ理由: 4. ...

MySQL の on と where における左結合設定条件の使用法の違いの分析

この記事では、MySQL の左結合における on 条件と where 条件の使用法の違いを例を使って...

1つの記事でNavicat for MySQLの基本を理解する

目次1. データベース操作2. データ型3. バックアップとリカバリ3. 操作4. 上級5. 知識補...

Vue はスクロール可能なポップアップウィンドウ効果を実装します

この記事では、スクロール可能なポップアップウィンドウ効果を実現するためのVueの具体的なコードを参考...

純粋な CSS 流星群の背景サンプルコード

GitHubアドレス、気に入ったらスターを付けてくださいプラグインのプレビューチュートリアルコード表...

MySQLユーザー管理操作例の分析

この記事では、MySQL ユーザー管理操作について説明します。ご参考までに、詳細は以下の通りです。こ...

CSS3実践手法のまとめ(推奨)

1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....

リンクAの意味論、書き方、ベストプラクティス

リンク A のセマンティクス、ライティング スタイル、およびベスト プラクティス。私は JavaEy...

Docker に MySQL と Redis をインストールする方法

この記事はCentOS 7.3システム環境をベースに、MySQLとRedisのインストールと使用につ...

keepalived+nginx の高可用性を実装する方法の例

1. keepalived の紹介Keepalived は、もともと LVS クラスタ システム内の...

MySQLの自動増分主キーIDはこのように処理されません

MySQLの自動増分主キーIDは段階的に増加しません1. はじめにMySQL データベースにデータを...