Ответ 1
||
является логическим или. Он возвращает первый правный операнд * (последнее оцениваемое значение). Так
var myHeader = headers || {'Content-type':'text/plain'};
Возвращает "заголовки", если он правдивый (и если он равен null или undefined, это значение вложено в "false" ). Если он ложный, он возвращает второй операнд. Я не верю, что это имеет очень специфическое имя в javascript, просто что-то общее, как "значение аргумента по умолчанию".
|
является побитовым или. Это математическая операция и делает что-то совершенно другое. Этот оператор здесь даже не имеет смысла (и он, как правило, просто создает 0
). Где бы вы ни увидели это, это была опечатка, и они хотели использовать логические или.
Итак, идите с этим первым методом (a = b || c
).
* "Логический или" также известен как "логическая дизъюнкция" или "инклюзивная дизъюнкция". Javascript, как и все языки программирования, оценивает логические выражения, используя оценку короткого замыкания. С логическим выражением или выражениями он оценивает каждый операнд правдоподобия и останавливается на первом истинном (и возвращает это значение). Если нет правных операндов, им все равно придется пройти через все, поэтому он возвращает последний операнд, все еще последний, который он оценил. Логически и (&) аналогичным образом закорочены, останавливаясь на первом ложном операнде.