Une minute
Pourquoi il faut utiliser Object.is() pour comparer des éléments
Nous savons tous que le langage JavaScript manque de typage et qu’il faut faire du Typescript et qu’on peut obtenir des résultats bizarres à cause de ce qu’on appelle la coercion ou le casting.
“Converting a value from one type to another is often called “type casting,” when done explicitly, and “coercion” when done implicitly (forced by the rules of how a value is used) Source: https://github.com/getify/You-Dont-Know-JS
Exemple “What the fuck” :
0 == ' ' //true
null == undefined //true
[1] == true //true
Il existe l’opérateur ===
qui améliore les choses en bloquant la conversion de type implicite mais qui ne résoud pas tout:
NaN == NaN //false
ES6 a introduit une nouvelle feature qui améliore encore les choses Object.is()
:
Par exmple:
Object.is(0 , ' '); //false
Object.is(null, undefined); //false
Object.is([1], true); //false
Object.is(NaN, NaN); //true
Plus de détails (source Mozilla: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness):