В предыдущем уроке мы изучили все бинарные операторы и тернарные операторы. JavaScript также предоставляет унарные операторы, которым требуется только одна переменная.
Унарные операторы в JavaScript — это операторы, которые работают с одним операндом, который может быть переменной или литералом. Другими словами, унарные операторы — это операторы, которые имеют один операнд.
Например, чтобы присвоить двум переменным разные значения, содержащие положительные или отрицательные знаки, используются следующие операторы:
let x = -10; // Assign 'x' x negative 10.
let y = +20; // Assign 'y' y positive 20 (the plus is not required).
Арифметические операторы также могут быть выполнены с одним операндом с использованием унарных операторов. Например, оператор x = x+1 имеет тот же результат, что и выражение x++.
- Типы унарных операторов в JavaScript
- Унарный оператор «плюс» в JavaScript
- Унарный оператор отрицания
- Попробуйте сами
- Оператор увеличения JavaScript (++)
- 1. Префикс (префикс):
- Попробуйте сами
- 2. Постфиксный инкремент (Postfix):
- Попробуйте сами
- Оператор декремента (- -) в JavaScript
- 1. Предварительный декремент:
- 2. Постдекремент:
Типы унарных операторов в JavaScript
Список унарных операторов JavaScript приведен ниже:
Оператор | Значение |
---|---|
+ | Изменяет операнд на число. |
– | Изменяет знак значения или инвертирует операнд. |
++ | Увеличить значение на 1. |
— | Уменьшить значение на 1. |
delete | Удаляет свойство. |
void | Возвращает неопределенное значение. |
typeof | Возвращает строку, представляющую тип данных. |
~ | Побитовое НЕ |
! | Логическое НЕ |
Давайте разберемся со всеми типами унарных операторов JavaScript по порядку.
Унарный оператор «плюс» в JavaScript
Унарный оператор плюс в JavaScript, позволяющий явно указывать знак числовых литералов. Его можно использовать для преобразования чего-либо в число. Рассмотрим следующий пример.
let x = +"20";
В приведенном выше операторе код приводит к тому, что строка «20» преобразуется в число с помощью унарного оператора плюс JavaScript, а числовое значение 20 сохраняется в переменной x. Если преобразование невозможно, возвращается NaN.
Унарный оператор отрицания
Когда унарный оператор минуса используется перед одиночным операндом, он выполняет унарное отрицание. Другими словами, он преобразует положительное значение в эквивалентное отрицательное значение и наоборот. Если операнд не является числом, то этот оператор пытается преобразовать его в 1.
Давайте рассмотрим несколько примеров программ, основанных на операторе унарного минуса в JavaScript.
Пример 1:
<script>
let a = 40;
let b = -a;
document.write("Value of a: " +b);
</script>
Output: Value of a: -40
Пример 2:
<script>
let a = "20";
let b = -a;
document.write("Value of a: " +b);
</script>
Output: Value of a: -20
Попробуйте сами
Пример 3:
<script>
let a = "text";
let b = -a;
document.write("Value of a: " +b);
</script>
Оператор увеличения JavaScript (++)
Оператор инкремента в JavaScript — это унарный оператор, который увеличивает значение переменной на единицу. Проще говоря, он увеличивает число на 1. Он представлен как ++.
Оператор ++ можно использовать в двух формах:
- Унарный оператор префиксного инкремента (префикс)
- Унарный оператор постфиксного инкремента (Postfix)
1. Префикс (префикс):
Когда мы пишем оператор ++ перед переменной, это называется префиксным унарным оператором. При префиксном инкременте сначала выполняется инкремент, а затем возвращается новое инкрементированное значение.
Другими словами, префиксный оператор сначала добавляет 1 к значению операнда, а затем результат сохраняется в переменной с левой стороны. Общий синтаксис префиксного унарного оператора следующий:
++x;
Если операнд является строкой, он преобразуется в число. Если преобразование невозможно, возвращается NaN. Давайте рассмотрим несколько примеров программ, основанных на предварительном инкрементном унарном операторе в JavaScript.
Пример 4:
<script>
let x = 10;
let y = ++x; // prefix.
document.write("x is " +x+ ", y is " +y);
</script>
Output: x is 11, y is 11
Первый оператор в коде скрипта присваивает x значение 10. Второй оператор в коде скрипта выполняет два разных действия:
- Увеличивает x до 11.
- Присваивает y новое увеличенное значение 11.
Пример 5:
<script>
let x = "20";
let y = ++x; // prefix.
document.write("x is " +x+ ", y is " +y);
</script>
Output: x is 21, y is 21
Попробуйте сами
Пример 6:
<script>
let x = "text";
let y = ++x; // prefix.
document.write("y is " +y);
</script>
2. Постфиксный инкремент (Postfix):
Когда мы пишем оператор ++ после переменной, это называется пост-инкрементом или постфиксным унарным оператором. При пост-инкременте оператор сначала возвращает значение операнда, а затем в конце выполняется инкремент.
Другими словами, постфиксный оператор сначала сохраняет значение в левой переменной, а затем оператор добавляет 1 к операнду. Общий синтаксис постфиксного оператора инкремента следующий:
x++;
Если операнд является строкой, он преобразуется в число. Если преобразование невозможно, возвращается NaN. Давайте рассмотрим пример программы, основанной на пост-инкрементном унарном операторе в JavaScript.
Пример 6:
<script>
let x = 50;
let y = x++; // suffix.
document.write("x is " +x+ ", y is " +y);
</script>
Output: x is 51, y is 50
Как вы можете заметить, при использовании постфиксного оператора значение x сначала сохраняется в y, а затем x увеличивается на 1. Таким образом, конечное значение x равно 51, но конечное значение y остается равным 50.
Пример 7:
<script>
let x = "30";
let y = x++; // suffix.
document.write("x is " +x+ ", y is " +y);
</script>
Output: x is 31, y is 30
Пример 8:
<script>
let x = true, y = false, z = 2;
let p, q, exp;
p = ++x;
q = y++;
exp = x+y+++++z;
document.write("x = " +x, "<br>");
document.write("y = " +y, "<br>");
document.write("z = " +z, "<br>");
document.write("p = " +p, "<br>");
document.write("q = " +q, "<br>");
document.write("exp = " +exp);
</script>
Output: x = 2 y = 2 z = 3 p = 2 q = 0 exp = 6
В этом примере программы начальные значения x, y, z равны true, false и 2 соответственно. Если логическое значение равно true, оно преобразуется в 1. Если логическое значение равно false, оно преобразуется в 0.
1. Когда оператор p = ++x выполняется интерпретатором JavaScript, значение x сначала увеличивается на 1, а затем значение x отображается как 2 в браузере.
После инкремента значение x сохраняется в переменной p. Поэтому значение p также отображается как 51 (то же самое, что и значение x). Таким образом, эта операция произошла в следующей форме:
x = x+1;
p = x;
2. Когда оператор q = y++ выполняется интерпретатором, текущее значение y сохраняется в переменной q, поскольку оператор инкремента имеет постфиксную форму. Поэтому значение q отображается как 0.
После сохранения текущего значения y в q, значение y увеличивается на 2, поскольку y изменяется дважды в программе, а затем присваивается y. Поэтому значение y отображается в браузере как 2. Таким образом, эта операция происходит в два этапа:
q = y;
y = (y+1)+1;
3. При выполнении оператора exp = x+y+++++z
значение x присваивается как 2, поскольку после приращения значение x теперь равно 2. Значение y увеличивается на 1, а затем ему присваивается как 1 в y, поскольку y++
находится в постфиксной форме.
Аналогично значение z также увеличивается на 1, а затем ему присваивается 3 в z. Сумма трех значений 2+1+ 3 будет сохранена в переменной c. Таким образом, выход равен 6.
Пример 9:
<script>
let x = 20;
let y = ++x * 10/x+++++x;
document.write("x = " +x, "<br>");
document.write("y = " +y, "<br>")
</script>
Output: x = 23 y = 33
Эта программа сложнее предыдущей программы-примера. Итак, давайте разберемся с объяснением программы выше.
1. Когда ++x выполняется в числителе выражения, сначала значение x увеличивается на 1, а затем возвращается к выражению как 21, которое умножается на 10.
Итак, операция будет происходить следующим образом:
let y = 21 * 10/x+++++x; // x assigns the value of 21.
2. Далее, когда выполняется x++ в знаменателе выражения, значение x снова увеличивается на 1, но в выражении будет использоваться исходное значение 21 x, поскольку оно является пост-инкрементом.
Итак, следующая операция будет такой:
let y = 21 * 10/21+++x; // x assigns value of 21.
3. Окончательное присвоение x увеличивает значение x на 1, поскольку это преинкремент. Таким образом, значение x теперь равно 23, поскольку после постинкремента значение x возвращается как 22 в ++x.
Мы можем упростить это:
let y = 21 * 10/21+23; // x assigns value of 23.
4. Наконец, мы можем легко оценить умножение и деление слева направо и выполнить простое сложение. Таким образом, конечное значение x равно 23, а значение y равно 33.
Попробуйте сами
Пример 10:
<script>
let x = 10;
let exp = ++x * x++;
document.write("exp = " +exp);
</script>
Оператор декремента (- -) в JavaScript
Оператор декремента (- -) в JavaScript — унарный оператор, уменьшающий значение переменной (операнда) на единицу. Он представлен как (– –).
Оператор – – вычитает 1 из значения операнда. Он встречается в двух формах:
- Унарный оператор предекремента (префикс)
- Унарный оператор постдекремента (Постфикс)
1. Предварительный декремент:
Когда мы пишем оператор – – перед переменной, это называется преддекрементным унарным оператором в JavaScript. В преддекрементном операторе сначала выполняется декремент, а затем возвращается новое декрементное значение.
Другими словами, префиксный оператор сначала вычитает 1 из операнда, а затем результат сохраняется в левой переменной. Общий синтаксис префиксного оператора следующий:
--x
Давайте рассмотрим несколько примеров программ, основанных на операторе предекремента в JavaScript.
Пример 11:
<script>
let x = 10;
let y = --x
document.write("x is " +x+ ", y is "+y);
</script>
Output: x is 9, y is 9
Внутри кода скрипта первый оператор присваивает x значение 10. Второй оператор в скрипте выполняет два разных действия:
- Уменьшает x до 9.
- Присваивает y новое уменьшенное значение.
2. Постдекремент:
Когда мы пишем оператор – – после переменной, это называется постдекрементным унарным оператором в JavaScript. При постдекременте оператор сначала возвращает значение операнда, а затем в конце выполняется декремент.
Другими словами, постфиксный оператор сначала сохраняет значение в левой переменной, а затем оператор вычитает 1 из операнда. Общий синтаксис постфиксного оператора декремента следующий:
x--;
Давайте рассмотрим пример программы, основанной на операторах постдекремента.
Пример 12:
<script>
let x = 10;
let y = x--;
document.write("x is " +x+ ", y is "+y);
</script>
Output: x is 9, y is 10
Как вы можете заметить, при использовании постфиксного оператора значение x сначала сохраняется в y, а затем x уменьшается на 1. Таким образом, конечное значение x равно 9, но конечное значение y остается равным 10.
Давайте рассмотрим пример программы, основанной на операторах пре-, пост-инкремента и пре-, пост-декремента для лучшей практики.
Пример 13:
<script>
let a = 1;
++a;
let b = a++;
a--;
let c = --a;
let x = a * 10/(b - c);
document.write("a is " +a+ ", x is "+x);
</script>
Output: a is 1, x is 10
В этом уроке вы изучили унарные операторы в JavaScript с различными примерами программ. Надеюсь, вы поняли основные концепции операторов пре- и пост-инкремента, операторов пре- и пост-декремента.