Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tại sao trong JavaScript: "if ('0' == false)" bằng true nhưng "if(0)" lại là false?

Hãy phân tích từng trường hợp:

1. '0' == false → true

Toán tử == thực hiện ép kiểu (type coercion). Quy tắc:

If Type(y) is Boolean, return the result of the comparison x == ToNumber(y)

Vì false là Boolean, JavaScript chuyển false thành số 0. Sau đó so sánh '0' (string) với 0 (number). String '0' cũng bị ép thành number 0. Kết quả: 0 == 0 → true.

Lưu ý: Ép kiểu này bỏ qua bản chất "truthy/falsy" của string '0'.

2. if(0) → false

Đây là kiểm tra truthy/falsy trực tiếp, không có ép kiểu. Trong JavaScript, các giá trị falsy bao gồm: false, 0, -0, 0n, "", null, undefined, NaN. Số 0 là falsy, nên if(0) không thực thi block code.

Tóm tắt:

Biểu thứcKết quảCơ chế
'0' == falsetrueÉp kiểu (coercion)
if(0)falseKiểm tra truthy/falsy trực tiếp
'0' === falsefalseSo sánh nghiêm ngặt (strict equality)

Khuyến nghị: Luôn dùng === (strict equality) để tránh các hành vi ép kiểu khó đoán.