Унарные операторы JavaScript

В этом руководстве вы узнаете, как использовать унарные операторы JavaScript, которые принимают один операнд и выполняют операцию.

Введение

Унарные операторы работают с одним значением.

Унарные операторыИмяЗначение
Унарный ПлюсПреобразование значения в число
-xУнарный минусПреобразование значения в число и его отрицание
++хОператор приращения (префикс)Добавьте 1 к значению
—xОператор декремента (префикс)Вычесть 1 из значения
х++Оператор приращения (постфикс)Добавьте 1 к значению
x–Оператор декремента (постфикс)Вычесть 1 из значения

Унарный плюс(+)

Унарный оператор плюс представляет собой простой знак плюс( + ). Если вы поместите его перед числовым значением, он ничего не сделает. Например

let x = 10; 
let y = +x; 
console.log(y); // 10

Когда вы применяете унарный оператор плюс к нечисловому значению, он выполняет преобразование числа с помощью функции Number() с правилами, приведенными в следующей таблице:

ЗначениеРезультат
booleanfalse до 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 работают с одним значением.
  • Унарный плюс( + ) или минус( - ) преобразует нечисловое значение в число. Унарный минус инвертирует значение после преобразования.
  • Оператор приращения префикса добавляет единицу к значению. Значение изменяется до того, как оператор будет оценен.
  • Оператор постфиксного приращения добавляет единицу к значению. Значение изменяется после оценки оператора.
  • Оператор декремента префикса вычитает единицу из значения. Значение изменяется до того, как оператор будет оценен.
  • Постфиксный оператор декремента вычитает единицу из значения. Значение изменяется после оценки оператора.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript