
- •Введение в JavaScript
- •Что такое JavaScript?
- •Что умеет JavaScript?
- •Что не умеет JavaScript?
- •В чем уникальность JavaScript?
- •Тенденции развития.
- •Недостатки JavaScript
- •Альтернативные технологии
- •ActiveX/npapi, плагины и расширения для браузера
- •Книги по js, html/css и не только
- •Объектно-ориентированное программирование
- •Уровни поддержки
- •Современный doctype
- •Справочники, и как в них искать
- •Спецификация ecmaScript
- •Спецификации html5
- •Редакторы для кода
- •Лёгкие редакторы
- •Sublime Text: шпаргалка
- •Горячие клавиши
- •Плагины
- •Установка и настройка браузеров
- •Установка
- •Включите консоль
- •Просмотр ошибок
- •Включаем отладку
- •Просмотр ошибок
- •Другие браузеры
- •Как поставить несколько версий браузеров?
- •Привет, мир!
- •Внешние скрипты
- •Структура кода
- •Команды
- •Комментарии
- •Переменные
- •Переменная
- •Аналогия из жизни
- •Копирование значений
- •Важность директивы var
- •Константы
- •Имена переменных
- •Зарезервированные имена
- •Правильный выбор имени
- •Имена переменных
- •Имена переменных
- •Зарезервированные имена
- •Правильный выбор имени
- •Введение в типы данных
- •Типы данных
- •Основные операторы
- •Термины: «унарный», «бинарный», «операнд»
- •Арифметические операторы
- •Присваивание
- •Приоритет
- •Побитовые операторы
- •Вызов операторов с присваиванием
- •Оператор запятая
- •Операторы сравнения и логические значения
- •Логические значения
- •Сравнение строк
- •Сравнение разных типов
- •Строгое равенство
- •Сравнение с null и undefined
- •Комментарии
- •Добавить комментарий
- •Комментариев: (14)
- •Побитовые операторы
- •Формат 32-битного целого числа со знаком
- •Список операторов
- •Описание работы операторов
- •& (Побитовое и)
- •| (Побитовое или)
- •Операторы битового сдвига
- •Применение побитовых операторов
- •Описание доступов
- •Проверка доступов
- •Маски в функциях
- •Округление
- •Проверка на -1
- •Умножение и деление на степени 2
- •Взаимодействие с пользователем: alert, prompt, confirm
- •Особенности встроенных функций
- •Комментарии
- •Добавить комментарий
- •Комментариев: (32)
- •Условные операторы: if, '?'
- •Оператор if
- •Преобразование к логическому типу
- •Неверное условие, else
- •Несколько условий, else if
- •Оператор вопросительный знак '?'
- •Несколько операторов '?'
- •Нетрадиционное использование '?'
- •Логические операторы
- •Короткий цикл вычислений
- •Значение или
- •Циклы while, for
- •Цикл while
- •Цикл do..While
- •Цикл for
- •Директивы break и continue
- •Выход: break
- •Следующая итерация: continue
- •Конструкция switch
- •Синтаксис
- •Пример работы
- •Группировка case
- •Тип имеет значение
- •Функции
- •Объявление
- •Локальные переменные
- •Внешние переменные
- •Параметры
- •Аргументы по умолчанию
- •Стиль объявления функций
- •Возврат значения
- •Выбор имени
- •Рекурсия, стек
- •Реализация pow(X, n) через рекурсию
- •Контекст выполнения, стек
- •Задачи на рекурсию
- •Методы и свойства
- •Пример: str.Length, str.ToUpperCase()
- •Пример: num.ToFixed
- •Всё вместе: особенности JavaScript
- •Структура кода
- •Переменные и типы
- •Взаимодействие с посетителем
- •Особенности операторов
- •Логические операторы
- •Конструкция switch
- •Функции
- •Методы и свойства
Побитовые операторы
Побитовые операторы рассматривают аргументы как 32-разрядные целые числа и работают на уровне их внутреннего двоичного представления.
Эти операторы не являются чем-то специфичным для JavaScript, они поддерживаются в большинстве языков программирования.
Поддерживаются следующие побитовые операторы:
AND(и) ( & )
OR(или) ( | )
XOR(побитовое исключающее или) ( ^ )
NOT(не) ( ~ )
LEFT SHIFT(левый сдвиг) ( << )
RIGHT SHIFT(правый сдвиг) ( >> )
ZERO-FILL RIGHT SHIFT(правый сдвиг с заполнением нулями) ( >>> )
Вы можете более подробно почитать о них в отдельной статье Побитовые операторы.
Вызов операторов с присваиванием
Часто нужно применить оператор к переменной и сохранить результат в ней же, например:
n = n + 5; |
|
d = d * 2; |
|
Эту запись можно укоротить при помощи совмещённых операторов: +=, -=, *=, /=, >>=, <<=, >>>=, &=, |=, ^=, вот так:
n = 2; |
|
n += 5; // теперь n=7 (аналогично n = n + 5) |
n *= 2; // теперь n=14 (аналогично n = n * 2) |
Все эти операторы имеют в точности такой же приоритет, как обычное присваивание, то есть выполняются после большинства других операций.
Важность: 3
Чему будет равен x в примере ниже?
var a = 2; |
|
|
|
var x = 1 + (a *= 2); |
Решение
[Открыть задачу в новом окне]
Оператор запятая
Запятая тоже является оператором. Ее можно вызвать явным образом, например:
a = (5, 6); |
|
|
|
alert(a); |
Запятая позволяет перечислять выражения, разделяя их запятой ','. Каждое из них — вычисляется и отбрасывается, за исключением последнего, которое возвращается.
Запятая — единственный оператор, приоритет которого ниже присваивания. В выражении a = (5,6) для явного задания приоритета использованы скобки, иначе оператор '=' выполнился бы до запятой ',', получилось бы (a=5), 6.
Зачем же нужен такой странный оператор, который отбрасывает значения всех перечисленных выражений, кроме последнего?
Обычно он используется в составе более сложных конструкций, чтобы сделать несколько действий в одной строке. Например:
// три операции в одной строке |
|
for (a = 1, b = 3, c = a*b; a < 10; a++) { |
... |
|
} |
|
Такие трюки используются во многих JavaScript-фреймворках для укорачивания кода.
Операторы сравнения и логические значения
Логические значения
Сравнение строк
Сравнение разных типов
Строгое равенство
Сравнение с null и undefined
Итого
В этом разделе мы познакомимся с операторами сравнения и с логическими значениями, которые такие операторы возвращают. Многие операторы сравнения знакомы нам со школы:
Больше/меньше: a > b, a < b.
Больше/меньше или равно: a >= b, a <= b.
Равно a == b. Для сравнения используется два символа равенства '='. Один символ a = b означал бы присваивание.
«Не равно». В школе он пишется как ≠, в JavaScript — знак равенства с восклицательным знаком перед ним !=.