Page 113 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 113
образом, вы сможете сравнивать их, используя оператор строгого равенства. Опе
ратор абстрактного равенства - это ==, а абстрактного неравенства - ! =. Если вы
хотите иметь подробную информацию о проблемах с оператором абстрактного ра
венства, я рекомендую книгу Дугласа Крокфорда favaScript: The Good Parts (издатель
ство O'Reilly).
Большинство проблем поведения операторов абстрактного равенства
связано со значениями null, undefined, пустой строкой и числом
О. По большей части, если вы сравниваете значения, о которых из
вестно, что они не могут быть одним из этих значений, использовать
оператор абстрактного равенства совершенно безопасно. Однако не
стоит недооценивать силу механической привычки. Если вы решаете,
как я рекомендую, всегда использовать оператор строгого равенства,
то вы можете никогда не заботиться об этом. Вам не придется пре
рывать ход своей мысли, чтобы задаться вопросом, будет ли безопас
но или выгодно использовать оператор абстрактного равенства; вы
просто используете оператор строгого равенства и двигаетесь дальше.
Если впоследствии окажется, что оператор строгого равенства не дает
желаемого результата, вы можете сделать соответствующее преоб
разование типов вместо того, чтобы переходить на проблематичный
оператор абстрактного равенства. Программирование - и так доста
точно сложное занятие, поэтому сделайте себе одолжение и избегайте
проблематичного оператора абстрактного равенства.
Вот несколько примеров использования операторов строгого и абстрактного ра
венства. Обратите внимание: даже при том, что объекты а и Ь содержат одну и ту же
информацию, это разные объекты, и они ни строго, ни абстрактно не равны.
const n = 5 ;
const s = " 5 " ;
n - -- s ; 1 1 false -- разные типы
n ! = = s ; 1 1 true
n --- NumЬer ( s ) ; 1 1 true - - "5 " преобразуется в число 5
n ! = = NumЬer ( s ) ; 1 1 false
n -- s ; 1 1 true; не рекомендуется
n ! = s ; 1 1 false; не рекомендуется
const а = name : " a n obj e ct" } ;
s
con t ь name : " a n obj e ct" } ;
а --- Ь; 1 1 fa lse -- разные объекты
а ! = = Ь; 1 1 true
а -- Ь; 1 1 false; не рекомендуется
а ! = Ь; 11 true; не рекомендуется
1 1 2 Глава 5. Выражения и операторы

