Выразительный JavaScript | страница 12



и >!==. Первый проверяет, что две величины абсолютно идентичны, второй – наоборот. И тогда сравнение >“” === false возвращает >false.

Рекомендую использовать трёхсимвольные операторы сравнения для защиты от неожиданных преобразований типов, которые могут привести к непредсказуемым последствиям. Если вы уверены, что типы сравниваемых величин будут совпадать, можно спокойно использовать короткие операторы.

Короткое вычисление логических операторов

Логические операторы >&& и >|| работают с величинами разных типов очень странным образом. Они преобразуют величину с левой стороны оператора в булевскую, чтобы понять, что делать дальше, но в зависимости от оператора и от результата этого преобразования, возвращают оригинальное значение либо левой, либо правой части.

К примеру, >|| вернёт значение с левой части, когда его можно преобразовать в >true – а иначе вернёт правую часть.

>console.log(null || "user")

>// → user

>console.log("Karl" || "user")

>// → Karl

Такая работа оператора >|| позволяет использовать его как откат к значению по умолчанию. Если вы дадите ему выражение, которое может вернуть пустое значение слева, то значение справа будет служить заменой на этот случай.

Оператор >&& работает сходным образом, но наоборот. Если величина слева преобразовывается в >false, он возвращает эту величину, а иначе – величину справа.

Ещё одно важное их свойство – выражение в правой части вычисляется только при необходимости. В случае >true || X не важно, чему равно >X. Даже если это какое-то ужасное выражение. Результат всегда >true и >X не вычисляется. Так же работает >false && X>X просто игнорируется. Это называется коротким вычислением.

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

Итог

Мы рассмотрели четыре типа величин JavaScript: числа, строки, булевские и неопределённые.

Эти величины получаются, когда мы пишем их имена (>true, >null) или значения (>13, >“ёпрст”). Их можно комбинировать и изменять при помощи операторов. Для арифметики есть бинарные операторы (>+, >-, >*, >/ и >%), объединение строк (>+), сравнение (>==, >!=, >===, >!==, ><, >>, ><=, >>=) и логические операторы (>&&, >||), а также несколько унарных операторов (>- для отрицательного значения, >! для логического отрицания и >typeof для определения типа величины).

Эти знания позволяют использовать JavaScript в качестве калькулятора, но и только. В следующей главе мы будем связывать эти простые значения вместе, чтобы составлять простые программы.