Ada masanya saya menggunakan dan memahami penggunaan praktikal let, const dan var dalam JavaScript, tetapi menerangkannya dalam perkataan adalah mencabar. Jika anda mendapati diri anda dalam kesusahan yang sama, perkara utama yang perlu diberi tumpuan ialah perbezaan skop, pengangkatan, pemulaan semula dan penugasan semula.
Skop:
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
Mengangkat
Mengangkat adalah seperti menyediakan ruang kerja sebelum anda memulakan tugas. Bayangkan anda berada di dapur, bersiap sedia untuk memasak hidangan. Sebelum anda mula memasak, anda letak semua bahan dan alatan anda di kaunter supaya mudah dicapai.
Dalam pengaturcaraan, apabila anda menulis kod, enjin JavaScript akan melalui kod anda sebelum benar-benar menjalankannya dan menyediakan semua pembolehubah dan fungsi di bahagian atas skopnya. Ini bermakna anda boleh menggunakan fungsi dan pembolehubah sebelum anda mengisytiharkannya dalam kod anda.
Ketiga-tiga (var, let, dan const) sememangnya dinaikkan. Walau bagaimanapun, perbezaannya terletak pada cara ia dimulakan semasa proses pengangkatan.
var dinaikkan dan dimulakan dengan 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;
Penugasan Semula dan Pemulaan Semula:
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.
Atas ialah kandungan terperinci Gambaran Keseluruhan Let, Const dan Var: Perbezaan Utama Diterangkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!