Операторы JavaScript



Оператор - это элемент программы, который предписывает выполнять те или иные конкретные действия. Оператор применяется к операндам. То есть, операнд - это элемент программы, который выполняет действия, предписанные оператором. Рассмотрим пример:

z = x + y

Здесь операторами являются знаки "=" и "+", а операндами - x, y и z. Если оператор применяется к одному операнду, то он называется унарным.

Унарный минус применяется для изменения знака числа на противоположный:

var x; /*объявляем переменную x*/
x=1; /*присваиваем переменной x значение 1*/
y=-x; /*применяем унарный минус к переменной x и записываем получившийся результат в переменной y*/
alert y; /*выводим на экран переменную y, равную -1*/

Унарный плюс, применённый к операнду, возвращает этот же операнд. Используется унарный плюс для преобразования данных к числовому типу:

var x,y; /*объявляем переменные x, y*/
x="1"; /*присваиваем переменной x значение, причём здесь 1 не число, а строка*/
y="2"; /*присваиваем переменной y значение, причём здесь 2 не число, а строка*/
alert (+x + +y); /*выводим на экран число 3, являющееся результатом сложения 1 и 2*/

Оператор, применяемый к двум операндам, называется бинарным:

var x, y; //объявляем переменные x и y
x = 1, y = 2; //задаём значения переменным
alert (x + y); //применяем бинарный плюс к переменным x и y

Арифметические операторы

ОператорДействиеПример
+Сложениеx+y
-Вычитаниеx-y
*Умножениеx*y
/Делениеx/y
%Деление по модулю (остаток от деления)x%y
++Инкремент (увеличение на 1)x++
--Декремент (уменьшение на 1)x--

С первыми четырьми оперторами, в целом, всё понятно. Оператор "%" возвращает остаток от деления:

alert (5%2); // 1, так как остаток от деления 5 на 2 равен 1

Инкремент и декремент работают следующим образом:

var x, y; //объявляем переменные x и y
x = 2, y = 1; //задаём значения переменным
alert (x++); //на экран выведется 3, так как x+1=2+1=3
alert (y--); //на экран выведется 0, так как y-1=1-1=0

В примере выше используется потфиксная форма записи. Существует, также, префиксная форма записи, знаки ставятся спереди:

var x, y; //объявляем переменные x и y
x = 2, y = 1; //задаём значения переменным
alert (++x); //на экран выведется 3
alert (--y); //на экран выведется 0

В чём разница между постфиксной и префиксной формами? Рассмотри 2 примера:

var i; //объявляем переменную i
i = 2; //задаём значение для i
var x; //объявляем переменную x
x = i++;
alert x; //на экран выведется 2

var i; //объявляем переменную i
i = 2; //задаём значение для i
var x; //объявляем переменную x
x = ++i;
alert x; //на экран выведется 3

В случае использования постфиксной формы в выражении, при записи результата в новую переменную, в неё запишется значение переменной, к которой была применена оперция инкремента/декремента, до применения данной операции. Если же форма префиксная, то в новую переменную, запишется значение исходной, увеличенной на 1.

Операторы инкремент и декремент применяются только к переменным!

Сложение строк в JavaScript или конкатенация

Сложение строк в JavaScript производится при помощи бинарного плюса. Данная операция носит название конкатенация.

alert ("Маша" + "_" + "Иванова"); /*На экран выведется сообщение "Маша_Иванова"

Если один из операндов является строкой, а остальные числами, то все операнды будут преобразованы в строки.

alert ("1" + "2" + 3); /*На экран выведется сообщение "123"

Все остальные арифметические операторы работают только с числами. В случае, если операнд является строкой, то, по возможности, он будет преобразован в число.

alert ("2" - 1); /*На экран выведется 1

Таблица приоритетов JavaScript

Каждый оператор в JavaScript имеет свой приоритет, как и в любом другом языке программирования, да и в математике в целом. Ниже, в таблице, напишем порядок выполнения некоторых операторов сверху вниз, то есть то, что выше, выполнится в выражении в первую очередь, а именно будет иметь более высокий приоритет:

ОператорНазваниеПример
...++
...--
Инкремент и декремент, постфиксная формаa++
a--
!
+
-
++...
--...
Отрицание, унарный плюс, унарный минус, инкремент и декремент, префиксная форма!a
+a
-a
++a
--a
*
/
%
Умножение, деление, остаток по модулюa*b
a/b
a%b
+
-
Сложение, вычитаниеa+b
a-b
<
<=
>
>=
Меньше, меньше или равно, больше, больше или равноa<b
a<=b
a>b
a>=b
==
!=
===
!==
Равенство, неравенство, строгое равенство, строгое неравенствоa==b
a!=b
a===b
a!==b
&&
||
Логическое "И", логическое "ИЛИ"a&&b
a||b
=Присваиваниеa=b
,Запятаяa,b

Сокращённые операции с присваиванием



Выражение:

a=a+1;

В JavaScript можно записать следующим образом:

a+=1;

Рассмотрим 2 примера в разных html-файлах.

<!DOCTYPE html>
<html>
 <head>
  <title>a=a+1</title>
 </head>
 <body>
  <script>
   var a; //объявление переменной a
   a=1; //присваивание переменной a значения 1
   a=a+1; //к значению a прибавляем 1, результат записываем в переменную a
   alert("a="+a); //выводим данные, сохранённые в переменной a, на экране a=2
  </script>
 </body>
</html>

Результат здесь. Теперь второй:

<!DOCTYPE html>
<html>
 <head>
  <title>a+=1</title>
 </head>
 <body>
  <script>
   var a; //объявление переменной a
   a=1; //присваивание переменной a значения 1
   a+=1; //к значению a прибавляем 1, результат записываем в переменную a
   alert("a="+a); //выводим данные, сохранённые в переменной a, на экране a=2
   </script>
  </body>
</html>

Вот и сам пример.

То, что мы сейчас написали для сложения, актуально и для многих других операторов. В JavaScript существуют следующие виды операций с присванием: +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=.

Оператор запятая

Оператор запятая имеет самый низкий приоритет. Используется обычно для разделения нескольких действий в одной строке:

var a=1, b=2, c=3;

Выше, в одной строке мы объявили сразу 3 переменных и тут же задали каждой из них значение. Здесь для каждой переменной сначала выполняется операция присваивания и только потом они (переменные) разделяются запятыми.

Если для одной переменной задать несколько значений разделённых запятой, то в неё запишется самое первое, а остальные отбросятся:

var a;
a=1,2,3;
alert (a); //на экран выведется 1

Если запятая будет выполняться раньше, чем присваивание, то первые выражения выполнятся и отбросятся, а самое последнее запишется в переменную:

var a;
a=(1,2,3);
alert (a); //на экран выведется 3

Получится это потому, что выражение, заключённое в скобки имеет наивысший приоритет.

Логические значения и операторы сравнения

Логических значений в JavaScript всего два:

  1. true - "истина" или "да";
  2. false - "ложь" или "нет".

Значения эти можно присваивать операндам напрямую или возвращать при помощи операторов сравнения:

Операторы сравнения в JavaScript
ОператорНазваниеПример
>Большеa>b
<Меньшеa<b
>=Больше либо равноa>=b
<=Меньше либо равноa<=b
==Равенствоa==b
!=Неравенствоa!=b
===Строгое равенствоa===b
!==Строгое неравенствоa!==b

Приведём пример:

<!DOCTYPE html>
<html>
 <head>
  <title>Сравнение чисел</title>
 </head>
 <body>
  <script>
   var a=true, b=false, c=1, d=2, e=c>=d, f=d>c;// объявляем переменные и применяем к ним операции сравнения
   alert ("a = "+a);//выводим на экран значение а с текстовым сообщение для пользователя
   alert ("b = "+b);//выводим на экран значение b с текстовым сообщение для пользователя
   alert ("1>=2 = "+e);//выводим на экран значение e с текстовым сообщение для пользователя
   alert ("2>1 = "+f);//выводим на экран значение f с текстовым сообщение для пользователя
   </script>
 </body>
</html>

Вот и он.

Сравнение строк в JavaScript

Помимо чисел, операции сравнения применимы к строкам. Используются, обычно, при проверке равенства строк.

При сравнении строк в JavaScript используется кодировка Unicode, в которой каждому символу (букве, знаку) присваивается числовой код. Сравниваются числовые значения символов, побуквенно слева направо, такое сравнение называется лексографическим. Сначала первые буквы. Если числовые значения этих букв разные, то на этом сравнение закончится, даже если в одном из сравниваемых слов больше букв.

alert ("Слон"<"Воронка");//на экран выведется false, так как числовое значение буквы "С" больше, чем числовое значение буквы "В"
alert ("Слон"<"Сода");//на экран выведется true, так как числовое значение буквы "o" больше, чем числовое значение буквы "л"

Если сравниваются слова, с одинаковыми знаками, но одно короче другого, здесь имеет значение количество символов. Отсутствие символа меньше наличия символа!

alert ("рисунок">"рис");

В приведённом выше примере на экран выведется окно с сообщением true, так как в слове "рис" меньше букв.

Имеет значение и регистр. Числовое значение заглавной буквы всегда меньше, чем у такой же строчной. При сравнении букв "a" и "А", значение "а" будет больше.

2018 год.


<<Предыдущая | В раздел | Следующая>>