
Всем привет сегодня мы рассмотрим новый метод , который добавила нам спецификация ES6, предназначений для сравнения двух значений. Итак поехали!
Все мы знаем что в js нет строгой типизации переменных и параметров , и из этого могут вытекать неприятные последствия. Поэтому проверять два значения на равенства рекомендуется через оператор эквивалентности ===, который сравнивает два аргумента не только по значению , но и по типу.
Рассмотрим следующие примеры таких сравнений:
console.log(+0 === -0); //true
console.log(NaN === NaN); //false
console.log(5 === '5');//false
console.log(undefined === undefined); //true
Как можно заметить и здесь не все гладко, в примерах где +0 === -0, NaN === NaN, нам вернулся не совсем тот результат который мы ожидали. И теперь в нашу игру вступает метод Object.is()
console.log(Object.is(+0 , -0)); //false
console.log(Object.is(NaN, NaN)); //true
console.log(Object.is(5 , '5'));//false
console.log(Object.is(undefined, undefined)); //true
На этот раз все наши ожидания насчет результатов были оправданны.
Но появление этого метода не означает закат операторов сравнения (==) и (===), поэтому вы можете пользоваться и старыми операторами, только помните что если корректность работы вашего кода зависит от особых случаев, то метод Object.is(), может стать для вас альтернативным решением.
Вот в принципе и все что я хотел рассказать вам про метод Object.is(). Пользуйтесь с умом! Удачи!