Операторы javascript (арифметические, логические и другие)
Здравствуйте уважаемые читатели! Сегодня поговорим об операторах языка 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++) {
...
}
На этом все! До новых встреч!
Оставить комментарий