В этом руководстве вы узнаете, как использовать унарные операторы 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 работают с одним значением.
- Унарный плюс(
+) или минус(-) преобразует нечисловое значение в число. Унарный минус инвертирует значение после преобразования. - Оператор приращения префикса добавляет единицу к значению. Значение изменяется до того, как оператор будет оценен.
- Оператор постфиксного приращения добавляет единицу к значению. Значение изменяется после оценки оператора.
- Оператор декремента префикса вычитает единицу из значения. Значение изменяется до того, как оператор будет оценен.
- Постфиксный оператор декремента вычитает единицу из значения. Значение изменяется после оценки оператора.
