Những điều bất ngờ cần phải chú ý khi bạn viết code javascript

1. So sánh 2 gía trị bằng nhau Trong javascript có thể so sánh giá trị bằng dầu (==) hoặc (===). Nhưng nó có một chút sợ biệt về việc sử dụng

  • dùng 2 dầu bằng (==)
"42" == 42
# true
"\n\t 42 \t\n\n" == 42
# true

Một bên là string còn một bên khác lá số, kết quả so sánh sẽ trả về true nếu giá trị của 2 bên bằng nhau

  • dùng 3 dầu bằng(===) (strict equal) Một số trường hợp cần thiết ví dụ validate..., nên sử dụng strict qual
"\n\t 42 \t\n\n" === 42
# false

2. Chú ý khi tính toán với kiểu số float

0.1 + 0.2 = 0.30000000000000004 
0.1 * 0.2 = 0.020000000000000004
0.1 + 0.2 === 0.3 => false

Rất bất ngờ khi nhìn kết quả tính toán ở trên. Tại sao tổng không phải 0.3 và kết qủa nhân không phải 0.02? Không chỉ riêng javascript, các ngôn ngữ khác cũng tương tự. Nếu muốn biết tại sao bạn có thể tìm hiểu ở đây http://floating-point-gui.de/basic/

3. null có bằng 0 không? chắc chắn null sẽ không bằng 0 nhưng nếu thực hiện tính toán như bên dưới

null == 0
# false
null > 0
# false
null >= 0
# true
null < 0 
# false
null <= 0 
# true

theo tính toán tại sao lại null không bằng 0? 🤔 Nếu bạn đang nghi ngờ hãy xem câu trả lời ở đây https://stackoverflow.com/questions/2910495/why-null-0-null-0-but-not-null-0

4. NaN (not a number) NaN(not a number) nghĩa là không phải là số nhưng nếu mình kiểm tra lại kiểu dữ liệu của nó lại tra về là kiểu number

typeof(NaN) => "number"