Bỏ qua

Luôn dùng ===. Nếu không có lý do hợp lý thì đừng dùng ==

JavaScript cố gắng đoán ý định của người viết chứ không báo lỗi
=== là == mà không đổi kiểu (type conversion).

'' == '0'           // false
0 == ''             // true
0 == '0'            // true

false == 'false'    // false
false == '0'        // true

false == undefined  // false
false == null       // false
null == undefined   // true

' \t\r\n ' == 0     // true

Toán hạng tham chiếu

var a = [1,2,3];
var b = [1,2,3];

var c = { x: 1, y: 2 };
var d = { x: 1, y: 2 };

var e = "text";
var f = "te" + "xt";

a == b            // false
a === b           // false

c == d            // false
c === d           // false

e == f            // true
e === f           // true

"abc" == new String("abc")    // true
"abc" === new String("abc")   // false

Nguồn:: Stack Overflow, Which equals operator (== vs ===) should be used in JavaScript comparisons?

JS Comparison Table

Vì những người đầu tiên sử dụng JavaScript muốn tiện nên tác giả của nó đã làm nó có những thứ kỳ quặc