JS 01. Var - Let - Const
Hello! I'm Zu.Doan
Series này mình muốn note lại những kiến thức về Javascript (JS)
var dùng như thế nào?
Từ khóa var được sử dụng để khai báo một biến trong JS
Biến được khai báo bằng var có một số đặc điểm như sau:
- (1) Biến đó sẽ có phạm vi toàn cục.
- (2) Biến đó sẽ có phạm vi cục bộ khi nằm trong hàm.
- (3) Biến đó có thể được khai báo lại hoặc ghi đè giá trị.
- (4) Biến đó sẽ được hoisting đồng thời được gán giá trị mặc định là
undefined
console.log(k); // In ra undefined - do k có được đặc tính (1) & (4)
{
console.log(k); // In ra undefined - do k có được đặc tính (1) & (4)
{
{
const l = 2;
if(l == 2) {
var k = 1; // Do k đã được hoisting nên trên đầu của scope nên đoạn này tương đương việc khai báo lại và gán giá trị cho k - do k có được đặc tính (3)
}
}
console.log(k);
}
function sayHello() {
var name = 'zu';
}
console.log(name); // Do ta gọi biến name ở ngoài function nên sẽ trả về lỗi ReferenceError: name is not defined - do k có đặc tính (2)
}
let dùng như thế nào?
Từ khóa let được sử dụng để khai báo một biến trong JS
Biến được khai báo bằng let có một số đặc điểm như sau:
- (1) Biến đó sẽ có phạm vi block scope.
- (2) Biến đó có thể ghi đè giá trị.
- (3) Biến đó sẽ được hoisting, nhưng KHÔNG được gán giá trị mặc định là
undefined(chỉ được khởi tạo nhưng không được gán giá trị => lỗi Reference error)
{
console.log(k); // ReferenceError: k is not defined - do k có đặc tính (1) + (3)
{
const l = 2;
if(l == 2) {
let k = 1;
k = 2; // Có thể ghi đè giá trị của k
let k = 3; // Uncaught SyntaxError: Identifier 'k' has already been declared
}
}
console.log(k); // ReferenceError: k is not defined - do k có đặc tính (1) + (3)
}
function sayHello() {
var name = 'zu';
}
console.log(name); // Do ta gọi biến name ở ngoài function nên sẽ trả về lỗi ReferenceError: name is not defined - do k có đặc tính (2)
}
const dùng như thế nào?
Từ khóa const được sử dụng để khai báo một biến trong JS
Biến được khai báo bằng const có một số đặc điểm như sau:
- (1) Biến đó sẽ có phạm vi block scope.
- (2) Biến đó KHÔNG thể ghi đè giá trị.
- (3) Biến đó sẽ được hoisting, nhưng KHÔNG được gán giá trị mặc định là
undefined(chỉ được khởi tạo nhưng không được gán giá trị => lỗi Reference error)
