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. Выражения и операторы
   108   109   110   111   112   113   114   115   116   117   118