Như chúng ta đã biết trong JS let, var, const đều dùng để khai báo biến vậy tại sao phải chia chúng ra. Chúng ta cùng tìm hiểu nhé.
1. Biến var
Như đã biết trong Vanilla Javascript, với từ khóa var
chúng ta có thể khai báo đa dạng các kiểu biến như number, string, boolean, etc. Trừ trường hợp được khai báo bên trong 1 function (khi đó biến var
sẽ có scope là function/locally scoped), biến var
sẽ có scope là globally scoped. Đặc biệt, biến var
còn có thêm tính chất hoisting: nghĩa là dù khai báo ở đâu thì biến đều sẽ được đem lên đầu scope trước khi code được thực hiện.
2. Biến let
Một trong những nguyên nhân khiến let
có thể thay thế var
để xử lý vấn đề nêu trên là vì biến let
được khai báo sẽ có scope là block scoped chứ không phải globally hay locally scoped.
let
cho phép chúng ta cập nhật giá trị của biến chứ không cho phép chúng ta tái khái báo lại biến đó.
Giống với var
, let
cũng có tính hoisting tuy nhiên lại khác nhau ở chỗ thay vì var
được khởi tạo với giá trị là undefined
thì let
sẽ không có bất kỳ giá trị khởi tạo nào. Điều này dẫn đến việc nếu chúng ta sử dụng biến let
trước khi khai báo thì sẽ gặp lỗi Reference Error
.
3. Biến const
Tương tự với let
cũng có scope là block scoped, và hoisting thì chúng ta có thêm 1 kiểu khai báo biến nữa là const
. Trong biến const
nếu trường hợp kiểu của biến là primitive (bao gồm string, number, boolean, null, và undefined) thì chúng ta sẽ không thể tái khai báo hay cập nhật giá trị mới để thay thế cho giá trị trước đó của biến.