曾經有一段時間,我使用並理解了 JavaScript 中 let、const 和 var 的實際用法,但用語言解釋它們是具有挑戰性的。如果您發現自己處於類似的困境,那麼需要關注的關鍵點是範圍、提升、重新初始化和重新分配方面的差異。
範圍:
function varExample() { if (true) { var x = 10; // x is function-scoped } console.log(x); // Outputs: 10 } varExample(); if (true) { var y = 20; // y is globally scoped because it's outside a function } console.log(y); // Outputs: 20
function letExample() { if (true) { let x = 10; // x is block-scoped console.log(x); // Outputs: 10 } console.log(x); // ReferenceError: x is not defined } letExample(); if (true) { let y = 20; // y is block-scoped console.log(y); // Outputs: 20 } console.log(y); // ReferenceError: y is not defined
function constExample() { if (true) { const x = 10; // x is block-scoped console.log(x); // Outputs: 10 } console.log(x); // ReferenceError: x is not defined } constExample(); if (true) { const y = 20; // y is block-scoped console.log(y); // Outputs: 20 } console.log(y); // ReferenceError: y is not defined
吊掛
提升就像在開始任務之前設定工作空間。想像一下你在廚房裡,準備做飯。在開始烹飪之前,請將所有食材和工具放在櫃檯上,以便觸手可及。
在程式設計中,當您編寫程式碼時,JavaScript 引擎會在實際執行程式碼之前檢查您的程式碼,並將所有變數和函數設定在其作用域的頂部。這意味著您可以在程式碼中聲明函數和變數之前使用它們。
所有三個(var、let 和 const)確實都被提升了。不過不同之處在於它們在提升過程中如何初始化。
var 被提升並初始化為 undefined。
console.log(myVar); // Outputs: undefined var myVar = 10;
console.log(myLet); // ReferenceError: Cannot access 'myLet' before initialization let myLet = 10;
console.log(myConst); // ReferenceError: Cannot access 'myConst' before initialization const myConst = 20;
重新分配與重新初始化:
var x = 10; x = 20; // Reassignment console.log(x); // Outputs: 20 var x = 30; // Reinitialization console.log(x); // Outputs: 30
let y = 10; y = 20; // Reassignment console.log(y); // Outputs: 20 let y = 30; // SyntaxError: Identifier 'y' has already been declared
const z = 10; z = 20; // TypeError: Assignment to constant variable. const z = 30; // SyntaxError: Identifier 'z' has already been declared
const obj = { a: 1 }; obj.a = 2; // Allowed, modifies the property console.log(obj.a); // Outputs: 2 obj = { a: 3 }; // TypeError: Assignment to constant variable.
const arr = [1, 2, 3]; arr[0] = 4; // Allowed, modifies the element console.log(arr); // Outputs: [4, 2, 3] arr = [5, 6, 7]; // TypeError: Assignment to constant variable.
以上是Let、Const 和 Var 概述:主要差異解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!