Операторы javascript (арифметические, логические и другие)

Рубрика: Javascript
25 ноября 2015

Здравствуйте уважаемые читатели! Сегодня поговорим об операторах языка javascript. С помощью операторов можно производить над переменными различные операции и вычисления. Javascript поддерживает множество операторов, большинство из которых есть в других языках программирования. 

Сперва немного о терминологии операторов. Любой оператор javascript применяется к одному или нескольким операндам. Например: 1 + 2 — где + оператор сложения, а 1 и 2 операнды.

Операторы бывают:

  • унарными — применяются только к одному операнду;
  • бинарными — применяются к двум операндам.

Существует оператор, у которого нет операндов — это оператор группировки.

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

Оператор Описание
+ сложение чисел
вычитание чисел
* умножение чисел
/ деление чисел
% остаток от деления чисел

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

Пример:

var x=10, y=5;
alert ("x + y = " + (x+y) + «\n» +
"x — y = " + (x-y) + «\n» +
"x * y = " + (x*y) + «\n» +
"x / y = " + (x/y) + «\n» +
"x % y = " + (x%y));

При выполнении стандартных арифметических операций необходимо следить, чтобы тип операндов был число. Иначе операнды будут приведены к числу, а в случае невозможности приведения операндов к числу в качестве результата выражения будет возвращено специальное значение NaN, исключение имеет операция сложения (+) применяемая к строкам.

Сложение строк

Если оператор + применяется к строковым переменным, то результатом будет объединенная строка. Пример:

var str = "Это " + «строка.»;
alert (str);//выведет Это строка

Другими словами, в языке javascript плюс кроме арифметического сложения производит конкатенацию строк. Причем если хотя бы один аргумент выражения является строкой, то второй также будет преобразован к строке. И не важно справа или слева будет строковый операнд, не строковый все равно будет преобразован в строку. Пример:

alert (1 + «2»);//выведет 12
alert («1» + 2);//выведет 12

Преобразование в число

Для преобразования переменных в число широко применяется унарный +

Обычно данные от пользователей поступают при помощи html формы и в большинстве случаев они поступают в форме строк. И в случае, если необходимо получить сумму, то применив бинарный плюс, получится объединение строк:

var x = «1»;
var y = «2»;
alert (x + y);//выведет 12


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

var x = «1»;
var y = «2»;
alert (+x + +y);//выведет 3

Присваивание

Оператор присваивания обозначается символом = (равно). Используется для присваивания переменным какого-либо значения:

var x = 5;
alert (x);//выведет 5


Оператор присваивания, как и все другие операторы, возвращает значение. Поэтому его можно использовать как часть другого выражения:

var x = 5;
var y = 10;
var a = 15 — (x = y + x);
alert (a);//выведет 0
alert (x);//выведет 15


Также возможно присваивание по цепочке:

var a, b, c;
a = b = c = 3+2;
alert (a);//выведет 5
alert (b);//выведет 5
alert ©;//выведет 5


Так как оператор присваивания имеет ассоциативность справа налево и один из самых маленьких приоритетов, то сначала выполняется выражение 3+2, результат которого присваивается переменной с, затем выполняется выражение b = c и последнее a = b. Таким способом удобно присваивать значение целой группе переменных.

Инкремент (++) и декремент (--)

В программировании часто требуется увеличивать или уменьшат значение переменных на единицу. Для этого в языке javascript имеются специальные операторы: 

  • инкремент '++' — увеличение на 1;
  • декремент '--' — уменьшение на 1.

Например:

var x = 2;
var y = 2;
x++;
y--;
alert (x);// 3
alert (y);//1


Операции инкремент и декремент можно применять только к переменным. Так код 1++ выдаст ошибку.

Операции инкремент и декремент имеют две формы:

  • постфиксную — после операнда (x++);
  • префиксную — перед операндом (++x).

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

var x = 1;
var y = 1;
var a = x++;
alert (a);//1
var b = ++y;
alert (b);//2


Операции инкремент и декремент можно использовать в любых выражениях. При этом они имеют более высокий приоритет и выполняются раньше, чем арифметические операции. Например:

var x = 1;
var y = 5 * ++x;
alert (y);//10

Побитовые операторы

Побитовые операторы рассматривают операнды как 32-х разрядные целые числа и работают на уровне их внутреннего двоичного представления.

Поддерживаются следующие побитовые операторы:

  • AND (и) ( & );
  • OR (или) ( | );
  • XOR (побитовое исключающее или) ( ^ );
  • NOT (не) ( ~ );
  • LEFT SHIFT (левый сдвиг) ( << );
  • RIGHT SHIFT (правый сдвиг) ( >> );
  • ZERO-FILL RIGHT SHIFT (правый сдвиг с заполнением нулями) ( >>> );

Побитовые используются редко и требую дополнительных знаний в программировании, поэтому это тема для отдельной статьи.

Сокращенная арифметика с присваиванием

Часто бывает нужно применить к переменной оператор и сохранить полученное значение в ней же:

var x = 2;
x = x *5;

Такую запись можно сократить с помощью совмещенных операторов:

var x = 2;
x *= 5;//равносильно x = x * 5
alert (x);


Так можно сделать для арифметических операторов +,-,*,/ и побитовых <<,>>,>>>,&,|,^.

Совмещенные операторы имеют такой же приоритет как и оператор присваивания и выполняются после большинства других операций:

var x = 2;
x *= 10 + 5;
alert (x); //30 (x = x*15)

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

Самым необычным оператором является оператор запятая (,). Она является бинарным оператором, может принимать операнды любого типа и всегда возвращает значение правого операнда:

var x = (1, 2);
alert (x);//2


Оператор запятая имеет приоритет ниже присваивания, поэтому в примере выше выражение заключено в скобки, иначе бы оператор = выполнился бы раньше и получилось бы x = 1.

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

for (var i = 1, j = 5, x = i*j; i < 10; i++) {
...
}

На этом все! До новых встреч!

Получай статьи почтой:

Похожие статьи:


Оставить комментарий




Подписаться, не комментируя -