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

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

1. 繰り返し宣言

var は繰り返し宣言をサポートしますが、let と const は繰り返し宣言をサポートしません。

1.1 変数

var a = 1;
var a = 2;
コンソールにログ出力します。

出力:

2

1.2 しましょう

b = 3 とします。
b = 4 とします。
コンソールログ(b);

出力:

キャッチされない構文エラー: 識別子 'b' はすでに宣言されています

1.3 定数

定数 c = 5;
定数 c = 6;
コンソールログ(c);

出力:

キャッチされない構文エラー: 識別子 'c' はすでに宣言されています

2. 可変プロモーション

var は変数の昇格をサポートしますが、宣言のみを昇格し、値は昇格しません。 let と const は変数の昇格をサポートしていません。

2.1 変数

2 = 2;
コンソールにログ出力します。
var a = 1;

出力:

2

2.2 しましょう

2 = 2;
コンソールにログ出力します。
a = 1 とします。

出力:

捕捉されない参照エラー: index.html:28 で初期化する前に 'a' にアクセスできません

2.3 定数

2 = 2;
コンソールにログ出力します。
定数a = 1;

出力:

捕捉されない参照エラー: index.html:28 で初期化する前に 'a' にアクセスできません

3. 一時的なデッドゾーン

var には一時的なデッドゾーンはありませんが、let と const には一時的なデッドゾーンがあります。
let と const がスコープ内に存在する限り、それらが宣言する変数または定数は自動的にこの領域に「バインド」され、外部スコープの影響を受けなくなります。

3.1 変数

var a = 1;
関数fun() {
    コンソールにログ出力します。
    var a = 2;
}
楽しい();

出力:

未定義

3.2 しましょう

a = 1 とします。
関数fun() {
    コンソールにログ出力します。
    a = 2 とします。
}
楽しい();

出力:

捕捉されない参照エラー: 初期化前に 'a' にアクセスできません

3.3 同意

a = 1 とします。
関数fun() {
    コンソールにログ出力します。
    定数a = 2;
}
楽しい();

出力:

捕捉されない参照エラー: 初期化前に 'a' にアクセスできません

4. ウィンドウオブジェクトのプロパティとメソッド

グローバル スコープでは、var で宣言された変数と function で宣言された関数は、自動的に window オブジェクトのプロパティとメソッドになります。

var a = 1;
関数 add() { };
コンソールにログ出力します。
console.log(window.add === 追加);

出力:

真実
真実

5. ブロックスコープ

var にはブロックレベルのスコープはありませんが、let と const にはブロックレベルのスコープがあります。
varを使用して for ループ内の変数 i を定義します。

(var i = 0; i < 3; i++) の場合 {
    // コンソールログ(i);
}
コンソールにログ出力します。

出力:

3

letを使用して for ループ内の変数 i を定義します。

(i = 0; i < 3; i++ とします) {
    // コンソールログ(i);
}
コンソールにログ出力します。

出力:

キャッチされない参照エラー: i が定義されていません

JavaScript における var、let、const の使い方の違いについての記事はこれで終わりです。JavaScript の var の使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 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 の違い

<<:  Dockerコマンドの自動補完の実装

>>:  HTML テーブル マークアップ チュートリアル (14): テーブル ヘッダー

推薦する

Centos7.4 システムに yum ソースから mysql 5.6 をインストールする

システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...

Mysql のフィールドのデータの一部をバッチ置換する (推奨)

MYSQL のフィールドのデータの一部をバッチで置き換えます。具体的な導入は次のとおりです。 1....

CSS 等高レイアウトの一般的な方法

等高レイアウト同じ親コンテナー内の同じ高さの子要素のレイアウトを指します。等高レイアウトの実装の観点...

Linux で複数のファイルの名前を一括で変更する方法

Linux では、通常、ファイルの名前を変更するために mv コマンドを使用します。これは、単一のフ...

古い Vue プロジェクトに Vite サポートを追加する方法

1. はじめに会社のプロジェクトを引き継いで2年になります。今では毎回プロジェクトを起動するのに1分...

タブ切り替え効果を実現するJavaScript

この記事では、タブ切り替え効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...

mysql と oracle のデフォルトのトランザクション分離レベルの説明

1. トランザクション特性(ACID) (1)原子性トランザクションに関係するプログラムによって実行...

Vue イメージ ドラッグ アンド ドロップ ズーム コンポーネントの使用方法の詳細な説明

Vueイメージドラッグアンドドロップズームコンポーネントの具体的な使い方は参考までに。具体的な内容は...

柔軟で安定した高品質の HTML および CSS コード標準を作成するためのガイド

黄金律常に同じコーディング標準セットに従ってください。同じプロジェクトに何人の人が関わっているかに関...

nginxのシンプル転送リクエストのサーバーとロケーション設定の詳しい説明

nginx のサーバーと場所の構成を簡単に整理してみましょう。たとえば、URL: www.mask_...

5分でDockerを使ってRedisのクラスターモードとセンチネルモードを構築する方法を教えます

目次1. 準備Redisイメージを取得する2. Redis Sentinel マスタースレーブモード...

mysqlは、現在の時刻が開始時刻と終了時刻の間にあるかどうかを判断し、開始時刻と終了時刻が空であることが許可されます。

目次要件: 進行中のアクティビティ データを照会する次のSQLクエリは、上記の4つの要件を満たし、タ...

Linux システム (CentOS7 インストール) に JDK8 をインストールするための詳細なチュートリアル

JDKのインストールシステムのインストールについてはあまり詳しく説明しません。インストール手順はオン...

MySQL 8のパスワードを忘れた場合のベストな対処法の簡単な分析

序文MySQL に精通している読者は、MySQL が非常に迅速に更新されることに気付くかもしれません...

MySql8 WITH RECURSIVE 再帰クエリ親子コレクションメソッド

背景コメントに似た機能を開発する場合は、必要に応じてすべてのコメントのサブセットをクエリする必要があ...