Skip to content

Latest commit

 

History

History
45 lines (33 loc) · 1.04 KB

File metadata and controls

45 lines (33 loc) · 1.04 KB

Abstract and Strict Comparison

JavaScript's comparison == operator is not at all like C#'s or Java's.

Just always use === please.

This example from MDN shows how abstract equality casts types before comparing.

 1  ==  1        // true
'1' ==  1        // true
 1  == '1'       // true
 0  == false     // true
 0  == null      // false

var object1 = {'value': 'key'};
var object2 = {'value': 'key'};
object1 == object2 // false

  0   == undefined // false
null  == undefined // true
null  == false     // false, weird right?
false == undefined // false, also

Abstract inequality is similar.

1 !=   2     // true
1 !=  '1'    // false
1 !=  "1"    // false
1 !=  true   // false
0 !=  false  // false

99% of the time, you probably meant to use the strict equality === operator.

Often it is better to avoid abstract equality comparison and prevent unintentional behavior.

3 === 3   // true
3 === '3' // false