Простейшие операции
До сих пор мы были в состоянии лишь дать имя переменной. Но переменная состоит из имени и значения. Присвоить значение переменной можно с помощью операции присваивания:
var a;
a=1;
var myString;
myString="Моя строка";
a=myString;
В первых двух строках я определил переменную a и присвоил ей значение 1. В следующих двух строках создана переменная myString и ей присвоено значение "Моя строка". В последней строке переменной a присваивается значение, которое имеет другая переменная - myString, т.е. теперь и она имеет в качестве значения строку "Моя строка". JavaScript безразлично, что хранит переменная - число, строку или какой-либо иной объект. В любом месте программы вы можете поместить в переменную все, что пожелаете.
Операции сравнения
Операции сравнения сравнивают два операнда и возвращают логическое значение, означающее результат этого сравнения. Строки сравниваются в лексикографическом порядке в кодировке Unicode. Если типы операндов различны, то делается попытка преобразовать их к одному типу. При этом:
- Операции "больше", "меньше", "не больше" и "не меньше" сначала пытаются преобразовать операнды в числа, а, если это невозможно, то в строки, а затем производят их сравнение.
- Операции "равно" и "не равно" пытаются преобразовать операнды в строки, затем в числа и в логические значения, а затем производят их сравнение.
- Операции "тождественно" и "не тождественно" не преобразовывают типы данных: два операнда считаются тождественно равными, если они имеют одинаковые типы и одинаковые значения.
Операция | Название | Описание |
a < b | Меньше | Возвращает true, если левый операнд меньше, чем правый операнд. |
a > b | Больше | Возвращает true, если левый операнд больше, чем правый операнд. |
a <= b | Не больше | Возвращает true, если левый операнд меньше или равен правому операнду. |
a => b | Не меньше | Возвращает true, если левый операнд больше или равен правому операнду. |
a == b | Равно | Возвращает true, если левый операнд равен правому операнду. |
a != b | Не равно | Возвращает true, если левый операнд не равен правому операнду. |
a === b | Тождественно | Возвращает true, если левый операнд тождественно равен правому операнду. |
a !== b | Не тождественно | Возвращает true, если левый операнд тождественно не равен правому операнду. |
Примеры:
var x = "3";
a = x == 3; // a равно true
b = x === 3; // b равно false (разные типы)
Арифметические операции
Арифметические операции применяются к числовым операндам и возвращают числовое значение, означающее результат операции. Если типы операндов различны, то делается попытка преобразовать их к числовому типу. При этом:
- Операция "сложение" выполняется только тогда, когда оба операнда являются числами или логическими значениями. Если хотя бы один операнд является строкой, то производится конкатенация строк.
- Остальные операции преобразуют операнды в числа, а затем выполняют операцию.
- Операции "инкремент" и "декремент" применяются только к переменным.
Операция | Название | Описание |
a + b | Сложение | Возвращает сумму двух операндов. |
a - b | Вычитание | Возвращает разность от вычитания правого операнда из левого. |
a * b | Умножение | Возвращает произведение двух операндов. |
a / b | Деление | Возвращает частное от деления левого операнда на правый. |
a % b | Остаток по модулю | Возвращает целый остаток от деления левого операнда на правый. Плавающие числа перед операцией округляются до целых. |
++ | Инкремент | Унарная операция. Увеличивает значение переменной на 1. Если используется как префикс (++a), возвращает значение операнда после увеличения его на 1. Если используется как постфикс (a++), возвращает значение операнда перед увеличением его на 1. |
-- | Декремент | Унарная операция. Уменьшает значение переменной на 1. Если используется как префикс (--a), возвращает значение операнда после уменьшения его на 1. Если используется как постфикс (a--), возвращает значение операнда перед уменьшением его на 1. |
-a | Смена знака | Унарная операция. Возвращает арифметическое отрицание операнда. |
Примеры:
var i, j, k;
i = 19 % 6.8; // i равно 5
k = 2;
j = k++; // j равно 2, k равно 3
j = ++k; // j и k равны 4
Битовые операции
Битовые операции применяются к числовым операндам, представленным как двоичные числа (т. е. как цепочки из 32 битов), и возвращают числовое значение, означающее результат операции. Перед выполнением операции операнды преобразуются в целые числа, а результат операции преобразуется в Number.
Операция | Название | Описание |
a & b | Побитовое AND | Возвращает в каждой битовой позиции 1, если соответствующие позиции обоих операндов равны 1. |
a | b | Побитовое OR | Возвращает в каждой битовой позиции 1, если соответствующая позиция хотя бы одного операнда равна 1. |
a ^ b | Побитовое XOR | Возвращает в каждой битовой позиции 1, если соответствующая позиция ровно одного операнда равна 1. |
~a | Побитовое NOT | Унарная операция. Инвертирует каждую битовую позицию операнда. |
a << b | Сдвиг влево | Сдвигает двоичное представление левого операнда влево на количество бит, заданное вторым операндом. Освобождающиеся справа биты заполняются нулями. |
a >> b | Арифметический сдвиг вправо | Сдвигает двоичное представление левого операнда вправо на количество бит, заданное вторым операндом. Освобождающиеся слева биты заполняются старшим (знаковым) битом. |
a >>> b | Логический сдвиг вправо | Сдвигает двоичное представление левого операнда вправо на количество бит, заданное вторым операндом. Освобождающиеся слева биты заполняются нулями. |
Примеры:
var i, j, k;
i = 15; j = 9;
k = i & j; // k равно 9 (1111 & 1001 = 1001)
k = i | j; // k равно 15 (1111 | 1001 = 1111)
k = i ^ j; // k равно 6 (1111 ^ 1001 = 0110)
i = -14; // двоичное значение 11111111 11111111 11111111 11110010
j = i >> 2; // j равно -4 (11111111 11111111 11111111 11111100)
k = i >>> 2; // k равно 1073741820 (00111111 11111111 11111111 11111100)
Логические операции
Логические операции применяются к логическим операндам и возвращают логическое значение, означающее результат операции. Если типы операндов различны, то делается попытка преобразовать их к логическому типу.
Операция | Название | Описание |
a && b | Логическое AND | Возвращает true, если оба операнда истинны. Если первый операнд ложен, то возвращает false, не вычисляя значение второго операнда. |
a || b | Логическое OR | Возвращает true, если хотя бы один операнд истинен. Если первый операнд истинен, то возвращает true, не вычисляя значение второго операнда. |
!a | Логическое NOT | Унарная операция. Возвращает true, если операнд ложен. |
Строковые операции
На сегодняшний день JavaScript поддерживает единственную строковую операцию, а именно конкатенацию строк, которая обозначается символом "+". Если хотя бы один операнд является строкой, то результатом операции является слияние строк-операндов. Примеры:
k = "Моя " + "строка"; // k равно "Моя строка"
text = "Результат: " + 123; // text равно "Результат: 123"