Những điều bất ngờ cần phải chú ý khi bạn viết code javascript
Bài đăng này đã không được cập nhật trong 7 năm
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"
All rights reserved