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

Tại sao [] == false là true nhưng [] || true lại là []? - JavaScript

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 ==:

  1. false → Number(false) = 0
  2. [] (object) → giá trị nguyên thủy: [].toString() = ''
  3. '' → Number('') = 0
  4. 0 == 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ứcCơ chếKết quả
[] == falseÉp kiểu sang Numbertrue
[] || trueĐánh giá Boolean (truthy)[]
Boolean([])Ép kiểu tường minhtrue

Bài học: Mảng rỗng là truthy trong boolean context, nhưng == false ép kiểu thành số 0.