JavaScript では、let
およびconst
はvar
変数を宣言するために使用されるキーワードです。これらは、スコープ、変数の巻き上げ、変更可能性、宣言の繰り返しの点で異なる特性を持っています。
違い:
- スコープ:
let
両方const
ともブロックレベルのスコープ変数ですvar
が関数スコープの変数です。ブロックレベルのスコープとは、let
とconst
が宣言されているブロック (中括弧) 内では{}
有効であり、そのブロックを越えると無効であることを意味します。関数スコープは、var
関数本体全体で有効であることを意味します。 - 変数ホイスティング:
var
変数ホイスティングがあります。つまり、変数は宣言される前に使用できます。また、変数ホイスティングをlet
行わない場合const
、宣言前に変数を使用するとエラーがスローされます。 - 可変性:
let
宣言var
された変数は再割り当てできますが、const
宣言された変数は定数で再割り当てできません。const
宣言されたオブジェクトまたは配列のプロパティまたは要素は引き続き変更できますが、新しいオブジェクトまたは配列として再割り当てすることはできないことに注意してください。 - 繰り返し宣言: 同一スコープ内では
var
同じ変数名を複数回宣言できますが、同一スコープ内で同じ変数名を繰り返し宣言することはできませんlet
。const
接続:
- 宣言方法: どちらも変数を宣言するために使用されますが、使用される構文は少し異なります。
let
: ブロックレベルのスコープで変更可能な変数を宣言するために使用されます。const
: 定数を宣言するために使用されます。定数は宣言後に再割り当てできず、ブロックレベルのスコープも持ちます。var
: 関数スコープを持つ変数を宣言するために使用されます。
- 変数の再定義: 使用
let
およびconst
宣言された変数を繰り返し定義することはできないため、エラーが発生します。ただし、var
同じ変数の複数の定義は許可されており、後続の定義は以前の定義をオーバーライドします。
一般的な推奨事項:
- より安全で柔軟性が高いため、可能な限り使用
let
およびconst
交換してください。var
let
変更する必要がある変数を宣言するために使用します。const
再割り当てされない、宣言された定数を使用してください。- 本当に関数スコープが必要な場合にのみ使用してください
var
。
let
変数を宣言するときは、状況に応じて、 、const
またはの使用を選択できますvar
。以下にいくつかの使用例を示します。
1. let を使用します。
let age = 25;
age = 26; // 可以重新赋值
console.log(age); // 输出 26
function updateName() {
let name = "John";
console.log(name);
}
updateName(); // 输出 "John"
console.log(name); // 报错,name 不在作用域内
2. const を使用します。
const PI = 3.14;
console.log(PI); // 输出 3.14
// 声明常量后不能再次赋值
PI = 3.14159; // 报错,不允许改变值
const person = {
name: "Alice",
age: 30
};
person.age = 31; // 对象的属性可以修改
person.city = "New York"; // 可以添加新的属性
console.log(person); // 输出 { name: "Alice", age: 31, city: "New York" }
3. var を使用します。
var count = 10;
count = 11; // 可以重新赋值
console.log(count); // 输出 11
function sayHello() {
var message = "Hello!";
console.log(message);
}
sayHello(); // 输出 "Hello!"
console.log(message); // 报错,message 不在作用域内