Арифметические операторы
Присваивание
Давайте отметим, что в таблице приоритетов также есть оператор присваивания . У него один из самых низких приоритетов: .
Именно поэтому, когда переменной что-либо присваивают, например, , то сначала выполнится арифметика, а уже затем произойдёт присваивание .
Возможно присваивание по цепочке:
Такое присваивание работает справа-налево. Сначала вычисляется самое правое выражение , и затем оно присваивается переменным слева: , и . В конце у всех переменных будет одно значение.
Оператор возвращает значение
Все операторы возвращают значение. Для некоторых это очевидно, например сложение или умножение . Но и оператор присваивания не является исключением.
Вызов записывает в и возвращает его.
Благодаря этому присваивание можно использовать как часть более сложного выражения:
В примере выше результатом будет значение, которое присваивается в (то есть ). Потом оно используется для дальнейших вычислений.
Забавное применение присваивания, не так ли? Нам нужно понимать, как это работает, потому что иногда это можно увидеть в JavaScript-библиотеках, но писать самим в таком стиле не рекомендуется. Такие трюки не сделают ваш код более понятным или читабельным.
Зачем нужен модуль?
Допустим, мы хотим разработать скрипт, который делает что-то полезное на странице.
Умея работать со страницей, мы могли бы сделать много чего, но так как пока этого не было (скоро научимся), то пусть скрипт просто выводит сообщение:
Файл
У этого скрипта есть свои внутренние переменные и функции.
В данном случае это и .
Предположим, что мы хотели бы распространять этот скрипт в виде библиотеки. Каждый, кто хочет, чтобы посетителям выдавалось «Привет» – может просто подключить этот скрипт. Достаточно скачать и подключить, например, как внешний файл – и готово.
Если подключить подобный скрипт к странице «как есть», то возможен конфликт с переменными, которые она использует.
То есть, при подключении к такой странице он её «сломает»:
открыть в песочнице
Автор страницы ожидает, что библиотека просто отработает, без побочных эффектов. А она вместе с этим переопределила в .
Если же убрать скрипт , то страница будет выводить правильное сообщение.
Зная внутреннее устройство нам, конечно, понятно, что проблема возникла потому, что переменная из скрипта перезаписала объявленную на странице.