目次
let
基本的な使い方
ES6では変数を宣言するletコマンドが追加されました。使い方は var と似ていますが、宣言された変数は let コマンドが配置されているコード ブロック内でのみ有効です。
重複した宣言は許可されません
const

JavaScript ES6 の let と const の比較

Jul 22, 2017 pm 04:54 PM
const

let

基本的な使い方

ES6では変数を宣言するletコマンドが追加されました。使い方は var と似ていますが、宣言された変数は let コマンドが配置されているコード ブロック内でのみ有効です。
{
  let a = 10;
  var b = 1;
}

a // ReferenceError: a is not defined.
b // 1

上面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

for循环的计数器,就很合适使用let命令。

for (let i = 0; i < 10; i++) {
  // ...
}

console.log(i);
// ReferenceError: i is not defined
上面代码中,计数器i只在for循环体内有效,在循环体外引用就会报错。

下面的代码如果使用var,最后输出的是10。

var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10
上面代码中,变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i。也就是说,所有数组a的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是10。

如果使用let,声明的变量仅在块级作用域内有效,最后输出的是6。

var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6
上面代码中,变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,所以最后输出的是6。你可能会问,如果每一轮循环的变量i都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量i时,就在上一轮循环的基础上进行计算。

另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

for (let i = 0; i < 3; i++) {
  let i = 'abc';
  console.log(i);
}
// abc
// abc
// abc
上面代码正确运行,输出了3次abc。这表明函数内部的变量i与循环变量i不在同一个作用域,有各自单独的作用域。
ログイン後にコピー

重複した宣言は許可されません

let不允许在相同作用域内,重复声明同一个变量。

// 报错
function () {
  let a = 10;
  var a = 1;
}

// 报错
function () {
  let a = 10;
  let a = 1;
}
因此,不能在函数内部重新声明参数。

function func(arg) {
  let arg; // 报错
}

function func(arg) {
  {
    let arg; // 不报错
  }
}
ログイン後にコピー

const

基本的な使い方

const声明一个只读的常量。一旦声明,常量的值就不能改变。

const PI = 3.1415;
PI // 3.1415

PI = 3;
// TypeError: Assignment to constant variable.
上面代码表明改变常量的值会报错。

const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

const foo;
// SyntaxError: Missing initializer in const declaration
上面代码表示,对于const来说,只声明不赋值,就会报错。

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

if (true) {
  const MAX = 5;
}

MAX // Uncaught ReferenceError: MAX is not defined
const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

if (true) {
  console.log(MAX); // ReferenceError
  const MAX = 5;
}
上面代码在常量MAX声明之前就调用,结果报错。

const声明的常量,也与let一样不可重复声明。

var message = "Hello!";
let age = 25;

// 以下两行都会报错
const message = "Goodbye!";
const age = 30;
ログイン後にコピー

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語のconstを深く理解する C言語のconstを深く理解する Feb 18, 2024 pm 12:56 PM

C の const の詳細な説明とコード例 C 言語では、const キーワードを使用して定数を定義します。これは、プログラムの実行中に変数の値を変更できないことを意味します。 const キーワードは、変数、関数パラメータ、関数の戻り値を変更するために使用できます。この記事では、C 言語での const キーワードの使用法を詳細に分析し、具体的なコード例を示します。 const 変更された変数 const を使用して変数を変更する場合、その変数は読み取り専用変数であり、値が割り当てられると変更できないことを意味します。例: 定数

var、let、const の違いについて話しましょう (コード例) var、let、const の違いについて話しましょう (コード例) Jan 06, 2023 pm 04:25 PM

この記事では、JavaScript に関する関連知識をお届けします。主に、var、let、const の違い、ECMAScript と JavaScript の関係について紹介します。興味のある方はぜひご覧ください。皆さんのお役に立てれば幸いです。

C言語でconstを使う方法 C言語でconstを使う方法 Sep 20, 2023 pm 01:34 PM

const は、定数、関数パラメータの const 修飾子、const で変更された関数の戻り値、および const で変更されたポインタを宣言するために使用できるキーワードです。詳細な導入: 1. 定数を宣言します。const キーワードを使用して定数を宣言できます。定数の値は、プログラムの実行中に変更できません。定数には、整数、浮動小数点数、整数などの基本的なデータ型を使用できます。文字など、またはカスタム データ型; 2. 関数パラメータ内の const 修飾子 const キーワードは関数のパラメータ内で使用でき、関数内でパラメータを変更できないことを示します。

Windows 11でオーディオサービスが応答しない問題を修正する18の方法 Windows 11でオーディオサービスが応答しない問題を修正する18の方法 Jun 05, 2023 pm 10:23 PM

オーディオ出力と入力が Windows 11 で期待どおりに動作するには、特定のドライバーとサービスが必要です。これらは場合によってはバックグラウンドでエラーが発生し、オーディオ出力がない、オーディオ デバイスが見つからない、オーディオが歪むなどのオーディオの問題を引き起こすことがあります。 Windows 11 でオーディオ サービスが応答しない問題を修正する方法 以下で説明する修正プログラムから始めて、問題を解決できるまでリストを順に進めていくことをお勧めします。 Windows 11 では、さまざまな理由でオーディオ サービスが応答しなくなる可能性があります。このリストは、Windows 11 でオーディオ サービスの応答を妨げるほとんどの問題を確認し、修正するのに役立ちます。プロセスを進めるには、以下の関連セクションに従ってください。方法 1: オーディオ サービスを再起動します。

C++ 構文エラー: const オブジェクトは定義時に初期化する必要があります。どのように対処すればよいですか? C++ 構文エラー: const オブジェクトは定義時に初期化する必要があります。どのように対処すればよいですか? Aug 22, 2023 am 09:13 AM

C++ プログラマにとって、構文エラーは最も一般的な問題の 1 つです。よくある間違いの 1 つは、定義時に const オブジェクトを初期化する必要があるということです。このような状況に遭遇した場合、どのように対処すればよいでしょうか?まず、const オブジェクトとは何かを理解する必要があります。 const キーワードは、プログラムの実行中に変数の値を変更できないことを指定する C++ の特殊な型修飾子です。このような変数は「定数」と呼ばれます。 const オブジェクトを初期化せずに定義すると、上記のエラーが発生します。これは

C++ 関数における const キーワードの正しい使用法は何ですか? C++ 関数における const キーワードの正しい使用法は何ですか? Apr 11, 2024 pm 02:36 PM

C++ での const キーワードの正しい使用法: const を使用して関数を変更するということは、関数が渡されたパラメーターやクラス メンバーを変更しないことを意味します。 const を使用して関数ポインターを宣言することは、ポインターが定数関数を指すことを意味します。

C++ エラー: const オブジェクトを非 const オブジェクトに変換できません。解決方法は? C++ エラー: const オブジェクトを非 const オブジェクトに変換できません。解決方法は? Aug 22, 2023 am 08:33 AM

厳密に型指定された言語である C++ は、型変換を実行するときに多くの詳細を考慮する必要がありますが、よくある問題は、const オブジェクトを非 const オブジェクトに変換できないことです。この問題は、ポインターと参照が関係する場合によく発生します。次に、この問題の原因と解決策について詳しく説明します。この問題の原因は、C++ の const キーワードが定数の定義に使用されており、一度定義された定数は変更できないことです。 const オブジェクトを非 const オブジェクトに変換するとき、実際には、

C++ での const ポインターと不変オブジェクトの使用法 C++ での const ポインターと不変オブジェクトの使用法 Jun 06, 2024 am 10:30 AM

C++ では、const ポインターは変更不可能なデータを指しますが、不変オブジェクトには変更できないという特性があります。 主な利点は次のとおりです。 const ポインター: 指すデータが誤って書き込まれるのを防ぎ、データの整合性を確保します。不変オブジェクト: クラス メンバー変数を const にすることにより、変更できないオブジェクトが作成され、データのセキュリティが確保されます。

See all articles