Javascript – undefined có thực sự undefined hay không?

*Như các bạn đã biết thì undefined trong javascript có nghĩa là khi sử dụng 1 variable nào đó mà chưa được định nghĩa hoặc một function void không trả về giá trị. Ví dụ:

const obj = {};
console.log(obj.name); // undefined

function example() {}
console.log(example()); // undefined

console.log(void(0)); // undefined

1.Điều gây nhầm lẫn

Vậy điều gì sẽ xảy ra nếu như chúng ta defined ra 1 variable “undefined” )) Với các trình duyệt hiện nay thì undefined là readonly tức là ta sẽ không định nghĩa lại được nó nữa. Ví dụ:

const undefined = 10; // SyntaxError
let undefined = 10; // SyntaxError
var undefined = 10;
console.log(undefined); // undefined

Như ví dụ ở trên thì chúng ta ko thể định nghĩa lại variable undefined bởi vì nó là giá trị readonly. Vậy thì làm sao để định nghĩa được nó. Các bạn hãy xem ví dụ tiếp theo sau đây.

function myFunction() {
    const undefined = 10;
    console.log(undefined);
}

myFunction(); // 10;

Các bạn đã thấy sự vi diệu ở đây chưa  Lúc đầu chúng ta không thể định nghĩa ở scope là global nhưng với scope local của 1 function thì vẫn định nghĩa lại được. Hãy thử với ví dụ khác. Trong scope là 1 cấu trúc điều kiện if

if (true) {
    var undefined = 10;
    console.log(undefined); // undefined
}

if (true) {
    let undefined = 10;
    console.log(undefined); // 10
}

2.Tổng kết

Theo như đã trình bày ở trên thì trong scope local của 1 function nào đó thì undefined hoàn toàn có thể trở thành 1 variable có giá trị. Như vậy có nghĩa rằng.

  • Hãy chắc chắn rằng mình không được đặt tên variable là undefined ở bất cứ đâu.
  • Nếu được hãy sử dụng void thay vì undefined để so sánh.
  • Trong dự án hãy sử dụng linter: Eslint, Tslint, … để hạn chế điều này.
  • Trong trường hợp bắt buộc dụng undefined để sao sánh giá trị thì có thể gán variable undefined thành “undefined” để chắc chắn undefined chính là “undefined” ))))

cre : LeCaoDat/viblo

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

Facebook