// не определен, используется значение константы, жестко определенной в тексте программы,
var max = max_width || preferences.max_width || 500;
Этот прием часто используется в функциях для определения значений по умолчанию параметров:
// Скопировать свойства объекта о в объект р и вернуть р
function сору(о, р) {
р = р || {}; // Если объект р не был передан, создать новый объект.
// реализация тела функции
}
4.10.3. Логическое НЕ (!)
Оператор ! является унарным оператором, помещаемым перед одиночным операндом. Он используется для инверсии логического значения своего операнда. Например, если переменная х имеет истинное значение, то выражение !х возвращает значение false. Если х имеет ложное значение, то выражение !х возвращает значение false. (true - вообще-то)
В отличие от операторов && и ||, оператор ! преобразует свой операнд в логическое значение (используя правила, описанные в главе 3) перед тем, как инвертировать его. Это означает, что оператор ! всегда возвращает true или false что всегда можно преобразовать любое значение х в его логический эквивалент, дважды применив этот оператор: !!х (раздел 3.8.2).
Будучи унарным, оператор ! имеет высокий приоритет и тесно связан с операндом. Если вам потребуется инвертировать значение выражения, такого как р && q, необходимо будет использовать круглые скобки: ! (р && q). В булевой алгебре есть две теоремы, которые можно выразить на языке JavaScript:
// Следующие две проверки на идентичность дают положительный результат
// при любых значениях р и q
!(р && q) === !р || !q !(р || q) === !р && !q
4.11. Выражения присваивания
Для присваивания значения переменной или свойству в языке JavaScript используется оператор =. Например:
і = 0 // Присвоит переменной і значение 0.
о.х = 1 // Присвоит свойству х объекта о значение 1.
Левым операндом оператора = должно быть левостороннее выражение: переменная, элемент массива или свойство объекта. Правым операндом может быть любое значение любого типа. Значением оператора присваивания является значение правого операнда. Побочный эффект оператора = заключается в присваивании значения правого операнда переменной или свойству, указанному слева, так что при последующих обращениях к переменной или свойству будет получено это значение.
Чаще всего выражения присваивания используются как самостоятельные инструкции; тем не менее иногда можно увидеть, как выражение присваивания включается в более сложные выражения. Например, в одном выражении можно совместить операции присваивания и проверки значения:
(а = b) == 0
обычно бывает необходимо использовать круглые скобки, если выражение присваивания используется в составе более сложного выражения.
Оператор присваивания имеет ассоциативность справа налево, поэтому при наличии в выражении нескольких операторов присваивания они вычисляются справа налево. Благодаря этому можно написать код, присваивающий одно значение нескольким переменным, например:
i = j = к = 0; // Инициализировать 3 переменные значением 0
4.11.1. Присваивание с операцией
Помимо обычного оператора присваивания = в языке JavaScript поддерживается несколько других операторов, объединяющих присваивание с некоторой другой операцией. Например, оператор += выполняет сложение и присваивание. Следующее выражение:
total += sales_tax
эквивалентно выражению: