JS null undefined

Trong các kiểu dữ liệu của JS, có lẽ null và undefined là 2 giá trị cũng như 2 kiểu giá trị khá là đặc biệt và thú vị 😄

1. undefined

undefined có nghĩa là không xác định. Cái gì không xác định? - thường dùng để nói về giá trị. Giá trị của biến, giá trị của thuộc tính, giá trị của hàm… đã được khai báo nhưng chưa có giá trị.

  let a
  console.log(a)
  >undefined

  *************************

  const object ={a: 'a'}
  console.log(object.b)
  >undefined

  *************************

  function f() {return}
  console.log(f())
  >undefined

2. null

null là gì? Theo như mình hiểu thì nó là một giá trị rỗng, những vẫn sẽ phải khởi tạo và gán giá trị.

const a = null
console.log(a)
> null

Mình đã có bài viết tìm hiểu kỹ hơn về null tại đây

3. null và undefined

Cả nullundefined đều là giá trị primitivefalsy trong JS nhưng lại có sự khác biệt nhau ra khó ràng.

  null == undefined         // true
  null === undefined        //false

  ***********************************

  console.log(typeof undefined)
  > undefined
  console.log(typeof null)
  > object

Kiểu dữ liệu của undefinedundefined nhưng của null lại là object. Đó là lý do lại sao phép so sánh === lại là false

Chúng ta sẽ có rất nhiều phép tính thú vị giữa nullundefined, nhưng mình không nhớ 😅

Cả nullundefined đều là những giá trị ít mong muốn gặp phải. Nhất là với trường hợp bắt giá trị từ client gửi lên server. Thường để kiểm soát 2 giá trị này, mình sẽ gán giá trị mặc định khi khai báo biến:

  let variable = null
  const userName = variable || 'No Name'
  console.log(userName)
  > No Name

  *****************************************

  let variable
  const userName = variable || 'No Name'
  console.log(userName)
  > No Name

Kể cả khi variablenull hay undefined thì biến sẽ gán với giá trị default mà mình định nghĩa.


** Lý thuyết chỉ là tĩnh, con người phải vận dụng lý thuyết vào thực tế mới là động. Nhưng phải lấy tĩnh chế động. **