Javascript || оператор

Я использую большую библиотеку JS для выполнения определенных операций рисования в холсте. Просмотрев библиотечный код (чтобы внести изменения в него), я столкнулся с "||" оператор используется таким образом, который, безусловно, не должен оцениваться как булеан. Означает ли это, что это другой оператор, или я пропущу что-то очевидное? Ниже приведен пример:

var $time = Date.now || function(){
return +new Date;
};

Ответ 2

Уже есть принятый ответ, но я хотел бы упомянуть, что OR-Operator также называется Default-Operator, потому что он не возвращает логическое, а вместо этого аргумент слева или справа.

То же самое относится к AND-Operator, который также называется guard-Operator.

Ознакомьтесь с crockford Survey языка программирования JavaScript для более подробной информации:

& & оператор обычно называется логическим и. Его также можно назвать охраной. Если первый операнд имеет значение false, null, undefined, "(пустая строка) или число 0, то он возвращает первый операнд. В противном случае он возвращает второй операнд. Это обеспечивает удобный способ записи нулевой проверки:

var value = p && & p.name;/* Значение имени будет только извлекается из p, если p имеет значение, избегая ошибки. */

|| оператор обычно называется логическим или. Его также можно назвать по умолчанию. Если первый операнд имеет значение false, null, undefined," " (пустая строка) или число 0, то он возвращает второй операнд. В противном случае он возвращает первый операнд. Это обеспечивает удобный способ указания значений по умолчанию:

value = v || 10;/* Используйте значение v, но если v не имеет значения, вместо этого используйте 10. */

Ответ 3

Это очень распространенный javascript. Если Data.now оценивает значение true, тогда устанавливается $time, иначе он устанавливается в функцию.

Ответ 4

Я считаю, что код говорит, что переменная DateTime.now не существует, вместо этого возвращает результат +new Date.

Ответ 5

Оператор || используется для назначения значения $time в примере.

Если Date.now оценивается как false, то $time присваивается значение в правой части оператора || (в данном случае - функция). Если Date.now имеет значение true, то оно короткое и присваивает значение Date.now $time