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ả null
và undefined
đều là giá trị primitive
và falsy
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 undefined
là undefined
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 null
và undefined
, nhưng mình không nhớ 😅
Cả null
và undefined
đề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 variable
là null
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. **