В этом руководстве вы узнаете, как использовать унарные операторы JavaScript, которые принимают один операнд и выполняют операцию.
Введение
Унарные операторы работают с одним значением.
Унарные операторы | Имя | Значение |
---|---|---|
+х | Унарный Плюс | Преобразование значения в число |
-x | Унарный минус | Преобразование значения в число и его отрицание |
++х | Оператор приращения (префикс) | Добавьте 1 к значению |
—x | Оператор декремента (префикс) | Вычесть 1 из значения |
х++ | Оператор приращения (постфикс) | Добавьте 1 к значению |
x– | Оператор декремента (постфикс) | Вычесть 1 из значения |
Унарный плюс(+)
Унарный оператор плюс представляет собой простой знак плюс( +
). Если вы поместите его перед числовым значением, он ничего не сделает. Например
let x = 10; let y = +x; console.log(y); // 10
Когда вы применяете унарный оператор плюс к нечисловому значению, он выполняет преобразование числа с помощью функции Number()
с правилами, приведенными в следующей таблице:
Значение | Результат |
---|---|
boolean | false до 0 , true до 1 |
string | Преобразование строкового значения на основе набора определенных правил |
object | Вызовите метод valueOf() и/или toString() , чтобы получить значение для преобразования в число. |
Например, в следующем примере преобразование строки '10'
в число 10
:
let s = '10'; console.log(+s); // 10
В следующем примере используется унарный оператор плюс( +
), который преобразует логическое значение в число, false
в 0
и true
в 1
.
let f = false, t = true; console.log(+f); // 0 console.log(+t); // 1
Выход:
0 1
Предположим, у вас есть объект product
с методом toString()
следующим образом:
let person = { name: 'John', toString: function() { return '25'; }, }; console.log(+person);
Выход:
25
В этом примере мы применяем плюс( +
) к объекту person
, у которого есть метод toString()
, движок JavaScript вызывает метод toString()
, чтобы получить значение( '25'
) и преобразовать его в число.
Следующий пример добавляет метод valueOf()
к объекту person
:
let person = { name: 'John', toString: function() { return '25'; }, valueOf: function() { return '30'; }, }; console.log(+person);
Выход:
30
В этом примере объект person
имеет метод valueOf()
, движок JavaScript вызывает его вместо метода toString()
, чтобы получить значение для преобразования.
Унарный минус(-)
Унарный оператор минус представляет собой одиночный знак минус( -
). Если вы примените унарный оператор минус к числу, он инвертирует число. Например:
let x = 10; let y = -x; console.log(y); // -10
Если вы применяете минус к нечисловому значению, он преобразует значение в число, используя те же правила, что и унарный оператор плюс, а затем инвертирует значение.
Операторы увеличения или уменьшения
Оператор инкремента имеет два знака плюс( ++
), а оператор декремента — два знака минус( --
).
Операторы инкремента и декремента имеют две версии: префиксную и постфиксную. И вы помещаете префиксную и постфиксную версии операторов инкремента или декремента до и после переменной, к которой они применяются.
В следующем примере оператор приращения префикса используется для добавления единицы к переменной:
let age = 25; ++age; console.log(age); // 26
Это эквивалентно следующему:
let age = 25; age = age + 1; console.log(age); // 26
В следующем примере используется префиксный оператор декремента для вычитания единицы из переменной:
let weight = 90; --weight; console.log(weight); // 89
Это эквивалентно следующему:
let weight = 90; weight = weight - 1; console.log(weight); // 89
Когда вы применяете инкремент или декремент префикса, JavaScript изменяет переменную перед вычислением оператора. Например:
let weight = 90; weight = ++weight + 5; console.log(weight); // 96
В этом примере:
- Во-первых, увеличьте вес в правой части так, чтобы ++вес был равен 91.
- Во-вторых, добавьте 5 к весу ++, который возвращает 96.
- В-третьих, присвойте результат весу в левой части.
Аналогично, в следующем примере используется оператор декремента префикса:
let weight = 90; weight = --weight + 5; console.log(weight); // 94
В этом примере:
- Во-первых, вычтите из веса 1, —weight возвращает 89.
- Во-вторых, добавьте 5 к –weight, который возвращает 94.
- В-третьих, присвойте результат весу в левой части.
Постфиксный оператор инкремента или декремента изменяет значение после выполнения оператора. Например:
let weight = 90; let newWeight = weight++ + 5; console.log(newWeight); // 95 console.log(weight); // 91
Как это работает:
- Сначала добавьте 5 к весу (90) и присвойте результат новому весу (95).
- Во-вторых, добавьте 1 к переменной веса после завершения второго оператора, вес станет равен 91.
- В-третьих, выведите в консоль как newWeight, так и weight.
При применении оператора инкремента/декремента к нечисловому значению выполняются следующие шаги:
- Сначала преобразуйте значение в число, используя те же правила, что и унарный оператор плюс(+).
- Затем добавьте единицу к значению или вычтите единицу из него.
Заключение
- Унарные операторы JavaScript работают с одним значением.
- Унарный плюс(
+
) или минус(-
) преобразует нечисловое значение в число. Унарный минус инвертирует значение после преобразования. - Оператор приращения префикса добавляет единицу к значению. Значение изменяется до того, как оператор будет оценен.
- Оператор постфиксного приращения добавляет единицу к значению. Значение изменяется после оценки оператора.
- Оператор декремента префикса вычитает единицу из значения. Значение изменяется до того, как оператор будет оценен.
- Постфиксный оператор декремента вычитает единицу из значения. Значение изменяется после оценки оператора.