Page 116 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 116

r
                  к
       Л о ичес и е   операторы
          Принимая во внимание, что арифметические операторы, с которыми мы все зна­
       комы, работают с числами, способными принимать бесконечные количества значе­
       ний  (или по крайней  мере очень большое  количество значений, поскольку память
       компьютеров конечна), логические операторы обрабатывают только логические зна­
       чения, способные принимать только одно из двух значений: истина или ложь.
          В математике (и во многих языках программирования) логические операторы ра­
       ботают только с логическими значениями и возвращают только  логические значе­
       ния. JavaScript позволяет работать со значениями, не являющимися логическими, и,
       что еще удивительнее, способными возвращать значения, не являющиеся логически­
       ми. Я не хочу сказать, что реализация логических операторов в JavaScript является
       в  чем-то неправильной или не строгой: используя только логические значения, вы
       будете получать результаты, являющиеся только логическими значениями.
          Прежде чем мы обсудим сами операторы, необходимо ознакомиться с механиз­
       мом сопоставления не логических значений с логическими значениями в JavaScript.

       И ст и н н ы  е и лож н ы  е значения

          Во  многих языках  есть  концепция значений "истинности"  и  "ложности";  в  С,
       например, даже  нет логического типа: число  О - это  ложь,  а все  другие числовые
       значения - истина. В JavaScript происходит нечто подобное, но задействуются все
       типы данных, фактически позволяя различить любое значение как истину и ложь.
                                                  (
       JavaScript полагает следующие значения ложью  f alse).
          •  undef ined
          •  nu l l

          •  false
          •   о
          •  NaN

          •   '  '  (пустая строка)
                                 t
          Все остальное - истина ( r ue). Поскольку истиной является великое множество
       значений, я не буду перечислять их здесь все, я укажу лишь те, о которых следует знать.
          •  Любой объект (включая тот, метод valueOf ( )   которого возвращает false).
          •  Любой массив (даже пустой).

          •  Строки, содержащие только отступ (например, "  ").
          •  Строка  " f a l s e " .
   111   112   113   114   115   116   117   118   119   120   121