Побитовое ИЛИ (|) в JavaScript и логическое ИЛИ (||): понимание разницы

В JavaScript символ вертикальной черты «|» и двойная вертикальная черта «||» имеют разные значения и используются в разных контекстах. Вот разница между ними:

  1. | (Одна вертикальная полоса):
    Одиночная вертикальная черта — это побитовый оператор ИЛИ в JavaScript. Он выполняет побитовую операцию ИЛИ над двумя операндами, рассматривая их как двоичные числа. Он сравнивает каждый бит операндов и возвращает новое значение с битами, установленными в 1, если хотя бы один из соответствующих битов в операндах равен 1.

    Пример:

    const a = 5;       // Binary: 0101
    const b = 3;       // Binary: 0011
    const result = a | b;   // Binary: 0111 (Decimal: 7)
  2. || (Двойная вертикальная черта):
    Двойная вертикальная черта — это логический оператор ИЛИ в JavaScript. Он выполняет логическую операцию ИЛИ над двумя операндами, оценивая значение true, если хотя бы один из операндов имеет значение true. Он возвращает первое встреченное истинное значение или последний операнд, если все операнды ложны.

    Пример:

    const a = 5;
    const b = 3;
    const result = a || b;   // result is 5 (true)

    В приведенном выше примере, поскольку aявляется достоверным значением (отличным от нуля), выражение a || bвозвращает a.

Подводя итог, можно сказать, что одна вертикальная черта “|” используется для побитовой операции ИЛИ, а двойная вертикальная черта “||” используется для логической операции ИЛИ. Побитовый оператор ИЛИ сравнивает отдельные биты, тогда как логический оператор ИЛИ сравнивает истинность операндов.