ReferenceError vs undefined errors trong JS
Disclaim: Fresher forever
Ok, let go...
Một cách vắn tắt, undefined
errors không thực sự là error, mà là một kiểu dữ liệu trong JS, là khi một biến được khai báo nhưng chưa được gán dữ liệu thì sẽ có kiểu là undefined
Ví dụ như
let a;
console.log(a); // undefined
Một số case khác bạn có thể gặp giá trị này là với một hàm không định nghĩa rõ giá trị trả về (trong python sẽ là None
hehe), hoặc khi bạn muốn lấy giá trị một thuộc tính của đối tượng mà thuộc tính này chưa tồn tại (obj.some_prop
)
Còn về ReferenceError
, thì là khi bạn truy cập một biến chưa được khai báo (let, const, var, tự search thêm nha) hoặc không tồn tại trong scope hiện tại (lại tự search ha), mấy case hay gặp là
- Biến chưa được khai báo
console.log(x); // ReferenceError: x is not defined
- Variable Hoist (đẩy lên vị trí cao hơn, hiểu ha, search thêm nha)
console.log(y); // ReferenceError: y is not defined
let y = 5;
- Block scope với
let
vàconst
if (true) {
let z = 10;
}
console.log(z); // ReferenceError: z is not defined
- Strict mode (không cho phép ngầm định nghĩa biến global)
'use strict';
a = 5; // ReferenceError: a is not defined
Hết rồi ...
All rights reserved