Nội dung bài viết
Video học lập trình mỗi ngày
onst, let, var trong javascript. Một bài viết so sánh nhanh nếu bạn nào lười đọc về ý nghĩa sâu xa của những khái niệm đó. Còn nếu muốn tìm hiểu thật sâu để biết rằng vì sao có var rồi, lại thêm const và let nữa thì xin mời theo tôi.
Khuyến khích đọc full: Cái chết của var trong javascript
Nhanh, gọn, lẹ về const vs let vs var
Ở dây chúng ta đang nói đến 3 loại khai báo biến hiện này đó là
- var
- let và const chỉ hợp lệ với ES6
Khuyến khích: Học lập trình javascript từ ES6 tới ES12
const let var difference
1. Không thể truy cập biến let bên ngoài khối bao quanh gần nhất nơi nó được khai báo.
{ let foo; } // ReferenceError: foo is not defined console.log(foo);
Nếu thay bằng var thì code trên chạy ngon lành.
2. Biến được khai báo bằng let không thể sử dụng được khi trước đó được khai báo.
{ foo = 'hello'; let foo; console.log(foo); } // ReferenceError: Cannot access 'foo' before initialization
Nếu thay bằng var code đó có chạy không, câu trả lời là có. 3. Không thể nào khai báo lại những biến sử dụng let
// There is no problems if variables are re-declared with the same name var foo, foo; var bar; var bar; let baz; let baz; // Throw the following error // SyntaxError: Identifier 'baz' has already been declared
4. Ở cấp cao nhất, biến toàn cục sử dụng let không sử dụng được với window object
let foo = 'hello'; window.foo; // undefined var bar = 'world'; window.bar; // 'world'
5. Nếu bạn không quan tâm đến closures thì có thể sử dụng let
Xem ví dụ và giải thích ở bài: Vì sao var lại chết, thay thế là const và let.
for(var i = 0; i < 10; i++){ console.log('inside block scope with Var >>',i) } console.log('outside block scope with Var >>',i); // Bạn nghĩ điều gì xảy ra ở console này??
và
for(let i = 0; i < 10; i++){ console.log('inside block scope with let >>',i) } console.log('outside block scope with let >>',i); // Bạn nghĩ điều gì xảy ra ở console này??
6. Const trông giống như let, ngoại trừ biến đã khai báo thì không thay đổi được.
// Throw the following error // SyntaxError: Missing initializer in const declaration const a;
Bạn cũng phải xác định một giá trị cho một constant
const a = 'hello'; // Throw the following error // TypeError: Assignment to constant variable a = 'world';
Cần lưu ý rằng việc sử dụng const không có nghĩa là biến là bất biến. Bạn có thể thay đổi các thuộc tính của một đối tượng:
const person = {}; person.age = 20;
Xem thêm: vì sao const có thể thay đổi được các thuộc tính của đối tượng.
Lời Khuyên: Đừng bao giờ sử dụng var trừ khi môi trường không support let và const