Tìm hiểu về Var, Let & Const trong javascript
Bài đăng này đã không được cập nhật trong 4 năm
Trong bài viết này chúng ta sẽ cùng hiểu sự khác biệt Var, Let & Const trong javascript Chúng ta sẽ sửa dụng cửa sổ console mặc định của trình duyệt để chạy các ví dụ:
Var
Cách thức khai báo
var name = "Benjamin";
console.log(name);
Khi bạn thực thi đoạn code trên. Biến name
của bạn sẽ oput ra giá trị: Benjamin
trên cửa sổ console. Và biến name
sẽ là 1 biến có phạm vi global.
Chúng ta có thể viết function riêng như sau:
function setup() {
var name = "Benjamin";
}
setup();
console.log(name);
Bạn nghĩ thế nào với kết console.log ra màn hình. Nếu bạn nghĩ nó là Benjamin
thì bạn đã nhầm.
Bởi vì biên name
được định nghĩa trong function setup()
và nó chỉ có phạm vi trong function setup()
.
Điều này có nghĩa là biến name
sẽ chỉ được sử dụng trong phạm vi của function setup()
.
Như vậy khi thực hiện đoạn code trên output trên cửa sổ console.log sẽ là undefined
.
Chúng ta có thể sử dụng các biến có phạm vi toàn cầu bên trong function setup()
. Điều này có nghĩa là biến age
có thể được sử dụng bên trong function settup()
. Điều này sẽ oput ra Benjamin 26 years old
trong cửa sổ console.
var age = 26;
function setup() {
var name = "Benjamin";
console.log(name + " is " + age + " years old");
}
setup();
Bạn chỉ có thể truy cập các variables
có cùng phạm vi hoặc phạm vi cao hơn. Vì vậy, từ bên trong một function, bạn có thể truy cập phạm vi global
. Nhưng từ global bạn không thể truy cập vào một variable
chỉ được tạo trong một function.
Nó có nghĩa là bạn có thể thay đổi được giá tri của biến global bên trong một function. Ví dụ:
var age = 26;
function setup() {
var name = "Benjamin";
age = 35;
}
setup();
console.log(age);
Chúng ta đã thay đổi gía trị của biến age
. Biến age
lúc này sẽ được thay đổi thành 35
. Khi đoạn code trên được thực thi ouput ra console của age
đã được thay thành 35
.
Sẽ khó khăn trong việc kiểm soát giá trị param
khi var
được sử dụng trong vòng lặp for
hoặc trong câu lệnh điều kiện if
... Một vòng lặp for
hoặc một câu lệnh if
đã tạo ra các biến của riêng nó. Điều này có nghĩa là biến có thể truy cập rộng rãi hơn bên ngoài vòng lặp vòng lặp dẫn tới phát sinh 1 số bug. Trong ví dụ dưới đây, biến i có phạm vi toàn cục. Điều này sẽ chỉ ra ở vd dưới đây.
for (var i = 1; i <= 10; i++) {
// Do something in this loop
}
console.log(i);
// The example above behaves the same as:
var i = 1;
for (i; i <= 10; i++) {
// Do something in this loop
}
console.log(i);
Lúc này kết quả oput ra console sẽ là 10
. mặc dù có global param i
= 1.
Let
Khác với var let
được sử dụng trong phạm vi khối. Có nghĩa là let
sẽ không quan trâm đến global param hay local bên trong function.
let
sẽ quan tâm đến khối mà nó đang tham gia. Một khối cơ bản là có {}
. Nó có thể là 1 function(), cũng có thể là 1 vòng lặp for
hoặc mệnh đề if
let i = 5;
for (let i = 1; i <= 10; i++) {
// Do something in this loop
}
console.log(i);
Điều này có nghĩa là trên ví dụ trên param i
không bị cập nhật thay đổi giá trị => conslog sẽ đưa ra oput là 5
let
hữu ích khi bạn muốn có một biến trong phạm vi của nó. Nó cũng có cập các biến ở các khối cao hơn & phạm vi cao hơn.
giống như var
để truy cập các biến có phạm vi cao hơn.
Const
Const
làm việc gần như let
tuy nhiên 1 khi bạn đã gán giá trị cho nó bạn sẽ ko thể thay đổi nó bằng 1 giá trị mới.
for (const i = 1; i <= 10; i++) {
// Do something in this loop
}
console.log(i);
Ví dụ trên sẽ đưa ra một error
cho bạn biết rằng bạn đang cố gán giá trị mới cho const
.
Const
sẽ hoạt động tốt bất cứ khi nào có 1 biến mà bạn không muốn thay đổi.
Bạn có thể sự dủng const
để cho code của dễ đọc hơn.
Bạn có thể sử dụng mã được fix cứng ở nhiều nơi, nhưng sử dụng const
làm cho mã của bạn dễ bảo trì hơn. Bất cứ khi nào giá trị này cần được thay đổi sẽ rất dễ dàng
và nhanh chóng thay vì phải tìm kiếm và thay thế cho toàn bộ mã fix cứng.
Trong ví dụ dưới đây, username
là giá trị mà chúng tôi nhận được từ đầu vào của người dùng và sẽ không thay
Một biến const làm cho mã dễ đọc hơn nhiều.
const username = document.querySelect(‘input[name=”username”]’).value;
Điều tương tự cũng xảy ra khi bạn làm việc với các object
lớn. bạn cũng có thể sử dụng const
để tăng khả năng đọc.
const books = api.data.sources[‘library’].books;
Sử dụng const
sẽ giúp bạn làm cho các đoạn mã trên trong ràng và minh bạch hơn. Điều này đặc biệt hưu ích khi bạn làm việc nhóm mà một ai đó sử dụng const
trong code. Người đọc code sẽ hiểu rằng có lẽ ko nên thay đổi giá trị này.
The Exception: the Combination of const and objects
Khai báo const
tạo một tham chiếu chỉ đọc đến một giá trị. Điều đó không có nghĩa là giá trị mà nó giữ là bất biến, chỉ là định danh biến không thể được gán lại.
Điều này có nghĩa là không thể thực hiện việc gán lại const.
const user = { 'name': 'Benjamin'};
user = { 'name': 'Bob'};
console.log(user);
Nhưng bạn có thể thay đổi giá trị của đối tượng này như sau:
const user = { 'name': 'Benjamin'};
// This is possible and won't give any errors
user.name = 'Bob';
user.age = 38;
Bài viết của mình đến đây là hết hẹn gặp lại trong các bài viết tiếp theo:
Tài liệu tham khảo:
All rights reserved