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

Cách so sánh String và Boolean trong JavaScript?

So sánh String và Boolean trong JavaScript có hành vi đặc biệt do type coercion (ép kiểu) của toán tử == (loose equality).

Kết quả với == (loose equality)

false == "0"      // true  (false → 0, "0" → 0)
true  == "1"      // true  (true → 1, "1" → 1)
false == ""       // true  (false → 0, "" → 0)
false == "false"  // false ("false" → NaN, 0 != NaN)
true  == "true"   // false ("true" → NaN, 1 != NaN)
true  == "1"      // true
false == " "      // true  (space → 0)
false == []       // true  ([] → "" → 0)
true  == [1]      // true  ([1] → "1" → 1)

Kết quả với === (strict equality)

false === "0"     // false (khác kiểu)
true  === "1"     // false
false === ""      // false

Chuyển đổi tường minh (Explicit conversion)

var data = true;

// So sánh string "true"
data === "true"           // false (boolean vs string)
String(data) === "true"   // true  (chuyển boolean → string)
data.toString() === "true" // true

// So sánh boolean từ string
Boolean("true")           // true  (string không rỗng → true)
"true" === "true"         // true  (so sánh string)
!!"true"                  // true

Khuyến nghị:

  • Luôn dùng === (strict equality) — tránh ép kiểu ngầm.
  • Nếu cần so sánh boolean với string: chuyển đổi tường minh String(bool) hoặc Boolean(str).
  • Boolean("false") là true (string không rỗng) — cẩn thận!