Каков порядок приоритета для модуля в Javascript?
Если у меня есть следующий код
var num = 15 % 2 + 6 * 4;
например... Я хотел бы знать, что будет выходной, в частности, я хотел бы знать порядок приоритета для модуля (операция, выполняемая %
условное обозначение). Будет ли модуль выполняться до или после операций сложения и умножения?
Изменить: я уже посмотрел на статью, на которую люди связывают меня
И сделал это до того, как задал вопрос, но, к сожалению, в нем не было достаточно информации, чтобы полностью ответить на мой вопрос, отсюда и мой вопрос здесь. Просто чтобы спасти людей от необходимости снова связываться.
Обновление: Рассматривая ассоциативность как признаки из обсуждения в комментариях под одним из предложенных ответов, можно сказать, что вопрос связан с ассоциативностью (если вы простите за случайный каламбур).
Обновление: редактирование синтаксиса (^_^?)
3 ответа
Технически это операторостатка (больше математических умов, чем мой, говорят, что модуль будет обрабатывать различия знаков по-разному), и он имеет тот же приоритет и ассоциативность, что и умножение и деление.
Так
var num = 15 % 2 + 6 * 4;
является
var num = (15 % 2) + (6 * 4);
У MDN есть удобная статья о приоритете операторов и ассоциативности.
Re ваш комментарий на вопрос:
... я получаю
num
значение переменной25
с кодом примера, покаvar num = 3 * 15 % 2 + 6 * 4;
также приводит кnum
переменная, котораяconsole.log
показывает, что также имеет значение25
...
Это потому, что оба 15 % 2 + 6 * 4
а также 3 * 15 % 2 + 6 * 4
являются 25
, Давайте разберемся с этим:
Ваш первый пример: 15 % 2 + 6 * 4
15 % 2 + 6 * 4
1 + 6 * 4
1 + 24
25
Ваш второй пример: 3 * 15 % 2 + 6 * 4
3 * 15 % 2 + 6 * 4
45 % 2 + 6 * 4
1 + 6 * 4
1 + 24
25
Модуль должен иметь тот же приоритет, что и деление, умножение и показатели. Смотрите здесь
По сути, вы идете слева направо, но сначала делаете плюс, затем умножаете, затем делите, а остальное - деление. Так
var num = 15 % 2 + 6 * 4;
в основном 15 % 2 = 1