JavaScript では、let、var、const を使用して変数を宣言できます。これらのキーワードは似ているように見えますが、コードの動作に大きな影響を与える可能性がある重要な違いがあります。この記事では、これらの違いを説明し、それぞれをいつ使用するかを理解するのに役立ちます。
var | させて | 定数 |
---|---|---|
紹介: JavaScript の初期から利用可能です。 | 導入先: ES6 (ECMAScript 2015) で追加されました。 | 導入先: ES6 (ECMAScript 2015) で追加されました。 |
スコープ: 関数スコープ。 var 変数は、それが宣言されている関数全体でアクセスできます。 | スコープ: ブロックスコープ。 let 変数は、それが宣言されているブロック {} 内でのみアクセスできます。 | スコープ: let. | と同様にブロックスコープ。
巻き上げ動作: var 変数は巻き上げられ、宣言される前に使用できます (ただし、未定義になります)。 | ホイスト動作: 変数はホイストされますが初期化されないため、宣言の前に変数を使用することはできません。 | ホイスト動作: let と同様に、const 変数はホイストされますが初期化されないため、使用する前に宣言する必要があります。 |
再宣言: 同じスコープ内でエラーなく var 変数を再宣言できます。 | 再宣言: 同じスコープ内で let 変数を再宣言することはできません。 | 再宣言: let. | と同様に、const 変数を再宣言することはできません。
再割り当て: var で宣言された変数は再割り当てできます。 | 再代入: let で宣言された変数も再代入できます。 | 再割り当て: const で宣言された変数は再割り当てできません。それらは定数です。 |
これは、var、let、const の動作がどのように異なるかを示す例です:
function userDetails(username) { if (username) { console.log(salary); // Output: undefined (due to hoisting) console.log(age); // Error: ReferenceError: Cannot access 'age' before initialization console.log(country); // Error: ReferenceError: Cannot access 'country' before initialization let age = 30; var salary = 10000; const country = "USA"; // Trying to reassign const // country = "Canada"; // Error: Assignment to constant variable. } console.log(salary); // Output: 10000 (accessible due to function scope) console.log(age); // Error: age is not defined (due to block scope) console.log(country); // Error: country is not defined (due to block scope) } userDetails("John");
例の説明:
var によるホイスト: var で宣言された給与変数が関数の先頭にホイストされます。これが、代入が行われるまでその値が定義されていないにもかかわらず、宣言前にアクセスできる理由です。
let と const: によるホイスト age 変数と country 変数もホイストされますが、var とは異なり、初期化されません。これは、宣言前にアクセスできず、ReferenceError.
ブロックスコープ: if ブロックの後でも、var が関数スコープを持っているため、salary にはアクセスできます。ただし、年齢 (let で宣言) と国 (const で宣言) は両方ともブロックスコープであるため、ブロックの外からアクセスすることはできません。
const:による再代入 const で宣言された変数は再代入できません。この例では、country の値を変更しようとするとエラーが発生します。
再割り当て可能な変数が必要だが、特定のコード ブロック内でのみアクセスできるようにする必要がある場合は、let を使用します。これは、ループ カウンター、条件、または変更されるがブロックの外に存在する必要がない変数に便利です。
関数全体でアクセスできる変数が必要な場合は、var を使用します。ただし、最新の JavaScript では、let と const の導入により、これはあまり一般的ではありません。
再代入してはいけない変数を宣言する場合は、constを使用します。これは、コード全体で同じにしておく必要がある構成値や固定データなどの定数に最適です。
var、let、const の違いを理解することは、最新の効率的な JavaScript を作成するために不可欠です。一般に、現代のコードでは var より let と const が好まれ、再割り当てすべきではない変数には const が主な選択肢となります。適切なキーワードを選択することで、バグが発生しにくく、より明確で信頼性の高いコードを作成できます。
変更すべきでない値には const を使用し、ブロック内で変更される可能性のある変数には let を使用し、ほとんどの場合 var を避けることで、JavaScript コードはより安全で管理しやすくなります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3