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

Sự khác biệt giữa == và === trong JavaScript

== (Loose/Abstract Equality)

Thực hiện type coercion (ép kiểu) trước khi so sánh.

4 == 4       // true
"4" == 4     // true
4 == "4"     // true
0 == false   // true
null == undefined // true
"" == 0      // true

=== (Strict Equality)

So sánh cả kiểu và giá trị, không ép kiểu.

4 === 4      // true
4 === "4"    // false
0 === false  // false
null === undefined // false
"" === 0     // false

Quy tắc ép kiểu của == (tóm tắt)

  1. Cùng kiểu → so sánh ===.
  2. Null/Undefined → bằng nhau.
  3. Number vs String → String → Number.
  4. Boolean → Number (true=1, false=0).
  5. Object vs Primitive → Object → Primitive (valueOf/toString).

Ví dụ object

var v1 = {value: 'key'};
var v2 = {value: 'key'};
v1 == v2   // false (tham chiếu khác)
v1 === v2  // false

Khuyến nghị tuyệt đối

Luôn dùng === và !==. Tránh == trừ trường hợp đặc biệt value == null (kiểm tra null/undefined cùng lúc).