Giải thích sự khác biệt giữa so sánh lỏng (==) và đánh giá boolean (||) với mảng rỗng.
Trường hợp 1: ([] == false)
Quy tắc ép kiểu (type coercion) cho ==:
false→Number(false)=0[](object) → giá trị nguyên thủy:[].toString()=''''→Number('')=00 == 0→true
Trường hợp 2: ([] || true)
Toán tử || đánh giá giá trị truthy/falsy bằng Boolean():
Boolean([])=true(mảng rỗng là truthy!)- Vế đầu truthy → trả về vế đầu:
[]
Tóm tắt
| Biểu thức | Cơ chế | Kết quả |
|---|---|---|
[] == false | Ép kiểu sang Number | true |
[] || true | Đánh giá Boolean (truthy) | [] |
Boolean([]) | Ép kiểu tường minh | true |
Bài học: Mảng rỗng là truthy trong boolean context, nhưng == false ép kiểu thành số 0.