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

Приоритет операторов

          Вторая по важности концепция, необходимая для осознания того, как каждое вы­
       ражение возвращает значение, приоритет операторов, - это следующий жизненно
       важный этап для понимания работы программ JavaScript.
          Т е перь, рассмотрев арифметические операторы, давайте приостановим наше об­
       суждение набора операторов JavaScript и  обсудим их приоритет. Если вы учились
       в школе, то должны быть уже знакомы с понятием приоритета операторов, даже если
       еще и не подозреваете об этом.
          Помните, когда-то в младших классах вы решали такие задачи (заранее прошу
       прощения у тех, кого раздражала арифметика).
       8  +  2  +  3  х  ( 4    х  2   - 1 )
          Если ваш ответ - 25, вы правильно применили приоритет операторов. Вы знали,
       что нужно начинать с круглых скобок, затем переходить к умножению и делению,
       а завершать сложением и вычитанием.
          Для  принятия  решения  о  том,  как вычислить  любое  выражение  (а  не только
       арифметическое), JavaScript использует подобный свод правил. Вы будете рады уз­
       нать, что в арифметических выражениях в JavaScript используется тот же порядок
       операций, который вы изучали в младших классах школы, легко запоминаемый с по­
       мощью мнемоники "PEMDAS" или "Please Excuse Му Dear Aunt Sally" (Пожалуйста,
       извините мою дорогую тетю Салли).
          Кроме арифметических в JavaScript есть еще много операторов, поэтому плохая
       новость: запомнить вам придется намного больший порядок. Хорошая новость -
       здесь, как и в математике, круглые скобки превосходят все: если вы не уверены в по­
       рядке выполнения операций определенного выражения, всегда можете поместить
       в круглые скобки операции, которые нужно выполнять сначала.
          В настоящее время в JavaScript есть 56 операторов, сгруппированных в  19 уровней
       приоритета (precedence level). Операторы с более высоким приоритетом выполня­
       ются перед операторами с более низким приоритетом. Хотя с годами я постепенно
       запомнил эту таблицу (не предпринимая для этого сознательных усилий), я все еще
       иногда обращаюсь к ней, чтобы обновить ее в памяти или увидеть, в какие уров­
       ни приоритета вписываются новые средства языка. Таблица приоритета операторов
       приведена в приложении Б.
          Операторы  с одинаковым приоритетом вычисляются  либо  справа налево, либо
                                                                                (
       слева направо. Например, умножение и деление имеют один и тот же приоритет  1 4)
       и вычисляются слева направо, а операторы присваивания (уровень приоритета -
       3) вычисляются справа налево. Вооружившись этим знанием, мы можем определить
       порядок выполнения операций в данном примере.





       1 1 0    Глава 5. Выражения и операторы
   106   107   108   109   110   111   112   113   114   115   116