const let var difference - So sánh nhanh cho những người lười đọc

Nội dung bài viết

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??

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

Có thể bạn đã bị missing