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