truthy và falsy value trong Javascript - làm sao cho dễ nhớ?
truthy vs falsy
3
Javascript
200
White

Phạm Hữu Hiền viết ngày 09/04/2017

alt text

truthy và falsy value là gì?

"Bạn hãy cho biết truthy và falsy value trong Javascript là gì" có lẽ là câu hỏi được hỏi phổ biến trong các buổi phỏng vấn về Javascript. Và mình nghĩ đa phần các bạn có thể sẽ lúng túng trước câu hỏi này vì bạn không nhớ được chính xác những giá trị đó. Vì thế hôm nay mình viết bài này để chia sẻ với các bạn về vấn đề này, hy vọng có thể giúp ích được các bạn phần nào.

Các bạn cứ nghĩ đơn giản như thế này, falsy values là những giá trị trong Javascript mà khi ép kiểu về Boolean, thì sẽ cho ra giá trị false. Tương tự, truthy values là những giá trị mà khi ép kiểu về Boolean, thì sẽ cho ra giá trị true.

Và trong Javascript có SÁU giá trị sau được coi là falsy, còn lại tất cả những giá trị khác không phải là những giá trị này đều được xem là truthy hết. Mình có cách nhớ sáu giá trị đó như sau giúp các bạn không thể nào quên được. Đó là các bạn dựa vào những kiểu dữ liệu trong Javascript để nhớ mà thôi.

Cách nhớ truthy và falsy value thật đơn giản

  • Kiểu Boolean có giá trị true và false, vậy giá trị false dĩ nhiên sẽ là falsy rồi.
  • Kiểu dữ liệu thứ hai là số (Number). Number thì chứa tất cả những con số, nhưng có hai giá trị đặc biệt đó là số không (0) và Not a Number (NaN), vậy 0 và NaN là falsy value.
  • Kiểu dữ liệu chuỗi (String) thì mình có chuỗi rỗng (chuỗi không chứa bất kỳ một ký tự nào khác) là falsy value.
  • Và còn lại 2 giá trị null và undefined cũng sẽ là falsy value.

Nói thì hơi dài dòng như vậy nhưng mình vẽ ra bảng dưới đây cho các bạn dễ hình dung

Kiểu dữ liệu Falsy value
Boolean false
Number 0 và NaN
String ''
null null
undefined undefined

Xong, như vậy là mình có tổng cộng 6 falsy values. Còn tất cả những giá trị còn lại khác những giá trị trên thì là truthy value hết, ví dụ như một chuỗi chứa số 0 ('0') thì vẫn là truthy value như thường.

Mình hy vọng với cách nhớ này các bạn có thể tự tin trả lời được câu hỏi dạng như thế này. Dĩ nhiên là người ta có thể không hỏi bạn một cách trực tiếp như thế mà có thể hỏi một cách gián tiếp. Và cách nhớ này cũng sẽ hữu ích trong công việc hằng ngày của các bạn khi mình phải làm công việc đó là code review.

Để biết thêm trong trường hợp nào giá trị của chúng ta sẽ được ép kiểu sang Boolean các bạn xem thêm tại đây nhé. https://youtu.be/OJrr2Dw1_KQ

Phạm Hữu Hiền
15-03-2017

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Phạm Hữu Hiền

3 bài viết.
19 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
13 4
Javascript biểu thức ] == true cho ra kết quả true hoặc false? Bạn đoán thử xem Trong bài viết trước mình nói về (Link) và cách để có thể nhớ nhữn...
Phạm Hữu Hiền viết 11 tháng trước
13 4
White
5 3
(Ảnh) Chào các bạn, chủ đề hôm nay mình muốn chia sẻ với các bạn đó là làm thế nào để viết code Javascript trông gọn gàng hơn bằng cách ứng dụng t...
Phạm Hữu Hiền viết 10 tháng trước
5 3
Bài viết liên quan
White
0 0
Checking if the collection is empty/notempty empty? clj user= (empty? ()) true user= (empty? '(1)) false notempty? use the idiom (seq x)...
Quan viết 11 tháng trước
0 0
White
13 4
Javascript biểu thức ] == true cho ra kết quả true hoặc false? Bạn đoán thử xem Trong bài viết trước mình nói về (Link) và cách để có thể nhớ nhữn...
Phạm Hữu Hiền viết 11 tháng trước
13 4
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
3 bài viết.
19 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!