Kiểu dữ liệu
Types (Kiểu dữ liệu)
Primitives
Khi làm việc với kiểu primitive, bạn thao tác trực tiếp trên giá trị.
string,number,boolean,null,undefined,symbol,bigint
const foo = 1;
let bar = foo;
bar = 9;
console.log(foo, bar); // => 1, 9
symbol và bigint không thể được polyfill một cách đầy đủ/chính xác, vì vậy không nên sử dụng chúng khi target các trình duyệt hoặc môi trường không hỗ trợ native.
Complex
Với kiểu phức tạp (object, array, function), bạn thao tác trên reference (tham chiếu).
const foo = [1, 2];
const bar = foo;
bar[0] = 9;
console.log(foo[0], bar[0]); // => 9, 9
References (Tham chiếu)
Dùng const cho mọi reference; tránh var
Đảm bảo không gán lại reference, tránh bug và code khó hiểu.
// ❌ Tránh
var a = 1;
var b = 2;
// ✅ Tốt
const a = 1;
const b = 2;
Cần gán lại thì dùng let, không dùng var
let có phạm vi block, var là function-scoped.
// ❌ Tránh
var count = 1;
if (true) {
count += 1;
}
// ✅ Tốt
let count = 1;
if (true) {
count += 1;
}
let và const là block-scoped
var là function-scoped; let/const chỉ tồn tại trong block được khai báo.
{
let a = 1;
const b = 1;
var c = 1;
}
console.log(a); // ReferenceError
console.log(b); // ReferenceError
console.log(c); // 1