Арифметика в Javascript
Арифметические операторы используются для выполнения арифметических операций с числами (константами или переменными):
| Оператор | Описание |
|---|---|
| + | Сложение |
| — | Вычитание |
| * | Умножение |
| / | Деление |
| % | Остаток от деления |
| ++ | Увеличение на 1 |
| — | Уменьшение на 1 |
Арифметические операции
Типичная арифметическая операция осуществляется с двумя числами.
Этими числами могут быть константы:
Операторы и операнды
Числа в арифметической операции называют операндами.
Операция, совершаемая между двумя операндами, называется оператор.
| Операнд | Оператор | Операнд |
|---|---|---|
| 100 | + | 50 |
Оператор сложения (+) вычисляет сумму чисел:
Оператор вычитания (-) вычисляет разницу чисел:
Оператор умножения (*) перемножает числа:
Оператор деления (/) делит одно число на другое:
Оператор деления по модулю (%) возвращает остаток от деления двух чисел:
Оператор инкремента (++) увеличивает число на 1:
Оператор декремента (—) уменьшает число на 1:
Старшинство операторов
Старшинство операторов определяет порядок, в котором совершаются операции в арифметических выражениях.
Рассмотрим следующий пример:
Какой результат мы получим? Как при вычислении 150 * 3 или 100 + 150?
Что вычисляется первым — сложение или умножение?
И здесь действуют те же правила, что и в обычной математике: умножение вычисляется первым.
Умножение (*) и деление (/) имеют более высокий приоритет, чем сложение (+) и вычитание (-).
И также как и в обычной математике старшинство можно изменить при помощи круглых скобок:
В этом случае первым вычисляется операция, расположенная внутри круглых скобок.
Если у нескольких операций одинаковое старшинство (как у сложения и вычитания), то они вычисляются слева направо:
Коэффициенты старшинства операторов в JavaScript:
| Коэффициент | Оператор | Описание | Пример |
|---|---|---|---|
| 20 | ( ) | Группирование выражений | (3 + 4) |
| 19 | . | Член объекта | person.name |
| 19 | [] | Член объекта или массива | person[«name»] |
| 19 | () | Вызов функции | myFunction() |
| 19 | new | Создание объекта | new Date() |
| 17 | ++ | Постфиксный инкремент | i++ |
| 17 | — | Постфиксный декремент | i— |
| 16 | ++ | Префиксный инкремент | ++i |
| 16 | — | Префиксный декремент | —i |
| 16 | ! | Логическое НЕ | !(x==y) |
| 15 | typeof | Тип | typeof x |
| 15 | ** | Возведение в степень | 10 ** 2 |
| 14 | * | Умножение | 10 * 5 |
| 14 | / | Деление | 10 / 18 |
| 14 | % | Деление по модулю | 10 % 5 |
| 13 | + | Сложение | 10 + 5 |
| 13 | — | Вычитание | 10 — 8 |
| 12 | << | Сдвиг влево | x << 2 |
| 12 | >> | Сдвиг вправо | x >> 2 |
| 12 | >>> | Сдвиг вправо (без знака) | x >>> 2 |
| 11 | < | Меньше чем | x < y |
| 11 | <= | Меньше или равно | x <= y |
| 11 | > | Больше чем | x > y |
| 11 | >= | Больше или равно | x >= y |
| 10 | == | Равенство | x == y |
| 10 | === | Строгое равенство | x === y |
| 10 | != | Неравенство | x != y |
| 10 | !== | Строгое неравенство | x !== y |
| 6 | && | Логическое И | x && y |
| 5 | || | Логическое ИЛИ | x || y |
| 3 | = | Присваивание | x = y |
| 3 | += | Присваивание | x += y |
| 3 | -= | Присваивание | x -= y |
| 3 | *= | Присваивание | x *= y |
| 3 | %= | Присваивание | x %= y |
| 3 | <<= | Присваивание | x <<= y |
| 3 | >>= | Присваивание | x >>= y |
| 3 | >>>= | Присваивание | x >>>= y |
| 3 | &= | Присваивание | x &= y |
| 3 | ^= | Присваивание | x ^= y |
| 3 | |= | Присваивание | x |= y |
Внимание! Выражения в круглых скобках полностью вычисляются до применения коэффициентов остальных выражений.
Арифметические операции
Арифметические операции принимают в качестве операндов числовые значения (это может быть и литерал и переменная) и возвращают результат в виде одного числового значения. Стандартными арифметическими операциями являются сложение ( + ), вычитание ( — ), умножение ( * ) и деление ( / ).
Сложение (+)
Оператор сложения возвращает сумму числовых операндов или объединяет строки.
Синтаксис
Примеры
Вычитание (-)
Оператор вычитания вычитает один операнд из другого и возвращает разницу.
Синтаксис
Примеры
Деление (/)
Оператор деления производит деление его операндов, где левый операнд — делимый, а правый — делитель.
Синтаксис
Примеры
Умножение (*)
Оператор умножения возвращает произведение операндов.
Синтаксис
Примеры
Остаток от деления (%)
Оператор возвращает целый остаток от деления левого операнда на правый. Возвращаемое значение всегда получает знак делимого, а не делителя. Он использует встроенную функцию modulo , для получения результата, которая является целочисленным остатком деления var1 на var2 — например— var1 modulo var2 . Есть предложение добавить оператор modulo в будующие версии ECMAScript, с той разницей, что оператор будет брать делителя, а не делимого.
Синтаксис
Примеры
Возведение в степень (**)
Это экспериментальная технология, часть предложения Harmony (ECMAScript 7).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Оператор возведения в степень возвращает результат первого операнда в степень. это, var1 var2 , в предыдущем выражении, где var1 и var2 — переменные. Он право ассоциативен. a ** b ** c равно a ** (b ** c) .
Синтаксис
Замечания
Во многих языках, таких как PHP и Python и других, есть оператор возведения возведения в степень (обычно ^ или **), оператор определён имеющим приоритет выше, чем у унарных операторов, таких как унарный + и унарный -, но есть несколько исключений. Например, в Bash оператор ** создан имеющим приоритет ниже, чем у унарных операторов. В JavaScript невозможно написать двухсмысленное выражение, т.е. вы не можете ставить унарный оператор ( +/-/
/!/delete/void/typeof ) сразу после числа.
Примеры
Изменим знак результата возведения в степень:
Насильная установка основания как отрицательного числа:
Инкремент (++)
Операция инкремента возвращает операнд, увеличенный на единицу.
- Если операция используется как постфикс, с оператором после операнда (например, x++), значение операнда возвращается, а затем увеличивается на единицу.
- Если используется префиксная форма с оператором перед операндом (например, ++x), значение операнда возвращается увеличенным на единицу.
Синтаксис
Примеры
Декремент (—)
Операция декремента уменьшает на 1 (отнимает единицу) свой операнд и возвращает получившееся значение.
- Если операция используется как постфикс (например, x—), значение операнда возвращается, а затем уменьшается на единицу.
- Если используется префиксная форма (например, —x), значение операнда возвращается уменьшенным на единицу.
Синтаксис
Примеры
Унарный минус (-)
Унарный минус ставится перед своим операндом и возвращает его математическое отрицание.
Синтаксис
Примеры
Унарный плюс (+)
Оператор унарный плюс предшедствует своему операнду и оценивает его, пытается преобразовать его в число, если он не уже. Хотя, унарное отрицание (-) также конвертирует не числа, унарный плюс — быстрейший и предпочитаемый способ конвертирования чего-либо в число потому, что он не выполняет каких-либо операций с числом. Он может конвертировать строковые представления целых и чисел с плавающей точкой, а также нестроковые значения true , false и null . Поддерживаются числа в десичном и шестнадцатиричном (с префиксом «0x») формате. Отрицательные числа тоже поддерживаются (но не 16-ричные). Если он не может вычислить конкретное значение, выполнится как NaN.
4.1. Арифметические операции в JavaScript
Вы знакомы с арифметикой? Умеете складывать и вычитать числа? JavaScript тоже умеет складывать и вычитать. В JavaScript есть такие операторы: сложение +, вычитание -, деление /, умножение *, деление с возвратом остатка %.
Усложним пример 1
Усложним пример 2
И третий пример усложним
И даже так можно сделать
Но это ерунда, по сравнению с тем, что еще умеет JavaScript. Для этого есть стандартный объект Math с множеством свойств (свойства и есть операции, в данном контексте).
Как использовать объект Math?
В случае выхода из диапазона, потери значащих разрядов или деления на ноль, JavaScript не выдает ошибку. Если результат будет слишком большой и выйдет из диапазона, то будет возвращено специальное значение «бесконечность», выглядит оно так « Infinity ».
Потеря значащих разрядов: результат арифметической операции оказывается очень близким к нулю. Если все же потеря была, то будет возвращен 0 (ноль).
Глобальная переменная NaN означает «не число». Есть одна особенность у этой переменной, операция проверки на равенство (==) всегда возвращает отрицательный результат и даже если его сравнивать с самим собой.
Чтобы определить, является ли значение переменной x значением NaN, нужно использовать конструкцию, которая ниже. Эта проверка будет иметь значение true только тогда, когда x будет равен NaN
Дополнение: оформление кода
Допустим вам нужно вывести два числа 12 и 16 . Вероятно вы сделаете так:
А в ответ получите 1216 , то есть пробела между ними не будет. Встает вопрос: Как добавить пробел?
Как видите, нужно просто склеить переменную с пробелом (пробел между кавычек). Склеить строки, значит поставить между ними знак плюс (+)