Variable
Duy Văn | 05/02/2025
Khai báo
Như đã nói, biến có thể được khai báo bằng:
- tự khai báo
- dùng
var - dùng
let - dùng
const - khai báo thông qua biến khác
Ví dụ cụ thể cả 5 cách:
a = 5;
var b = 10;
let c = 15;
const d = 20;
e = a;
console.log(a, b, c, d, e); // 5 10 15 20 5
Cách khai báo biến thì quy luật luôn là nên khai báo từ đầu tại scope của biến đấy, lý do thì ở đây
Cách khai báo bằng var cũng đã rất hạn chế sử dụng với let và const thay thế, vì var có scope toàn cục nếu không nằm trong function, nếu không sẽ là scope của function. Tuy nhiên convention này áp dụng cho phía Web Dev, còn phía lập trình thì bình thường.
Tên biến
Như đã nêu ở bài Syntax, tên biến không được bắt đầu bằng số, không chứa ký tự đặc biệt, không chứa khoảng trắng, không trùng với từ khóa của JS.
Ngoài ra, tên của các biến không được trùng với nhau và chúng đều phân biệt viết thường và viết hoa.
Gán giá trị
Gán giá trị được thực hiện với operator =, nếu chúng ta chỉ khai báo mà không gán giá trị thì giá trị của biến sẽ là undefined.
let a;
console.log(a); // undefined
Nếu thực hiện khai báo lại thì giá trị đã gán sẽ không mất đi mà nó chỉ thay đổi khi thực hiện gán lại
var a = 5;
console.log(a); // 5
var a;
console.log(a); // 5
a = 10;
console.log(a); // 10
Đối với let và const thì không thể khai báo lại, nếu thực hiện sẽ báo lỗi
Kết
Chốt lại cho let và const
let được đưa vào JS sau ES6 - ECMAScript 2015
- biến khai báo bằng
letsẽ chỉ tồn tại trong block scope mà nó được khai báo - biến khai báo bằng
letcần phải được khai báo trước khi sử dụng - biến khai báo bằng
letkhông thể được khai báo lại trong cùng 1 scope letcó vấn đề với hoisting, nếu truy cập biến trước khi nó được khai báo, sẽ báo lỗi
const cũng được đưa vào JS sau ES6 - ECMAScript 2015
- biến khai báo bằng
constsẽ chỉ tồn tại trong block scope mà nó được khai báo - biến khai báo bằng
constcần phải được khai báo cùng giá trị ngay từ lúc khai báo - biến khai báo bằng
constkhông thể khai báo lại - biến khai báo bằng
constkhông thể gán lại giá trị mới
Có một điểm đặc biệt với khai báo biến khi được dùng với các object khác hay array, đó là const ám chỉ reference tới giá trị chứ không phải ám chỉ giá trị
Đồng thời vì let và const không hoist được, ngay lập tức báo lỗi nên sẽ giúp tránh được bug