Битовые операции
Битовые операции применяются к числовым операндам, представленным как двоичные числа (т. е. как цепочки из 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"
Операции присваивания
Операции присваивания присваивают левому операнду результат операции, который определяется правым операндом и самой операцией. Базовая операция присваивания имеет вид a = b, что означает: присвоить переменной a значение операнда b. Все остальные операции присваивания являются сокращениями других операций, совмещенных с присваиванием, как показано в следующей таблице.
Операции присваиванияОперация | Значение |
---|
a += b | a = a + b | a -= b | a = a - b | a *= b | a = a * b | a /= b | a = a / b | a %= b | a = a % b | a <<= b | a = a << b | a >>= b | a = a >> b | a >>>= b | a = a >>> b | a &= b | a = a & b | a |= b | a = a | b | a ^= b | a = a ^ b |
Операция присваивания возвращает значение, которое равно значению, присвоенному левому операнду. Пример:
i = j = k = 0; // все переменные получают значение 0
1 2 3 4
8 8 8
| |