Они разные операторы.
Где x
и y
являются числами , x | y
является bit-wise or и x + y
является дополнением. Для около значения x
и y
у них будут одинаковые результаты - для всего остального результат будет различным .
Во всяком случае, используйте форму, которая означает, что необходимо . Не беспокойтесь о производительности, если нет случая с производительностью - jsperf - удобный инструмент для этого. Тогда поймите, что микро-бенчмарки и по своей сути предвзятые и это usually doesn't matter.
Для этой конкретной проблемы, обратите внимание на регулярное выражение соответствует каждому символу A-Z и заменяет его с результатом функции.
Таким образом, мы знаем, что charCodeAt(0)
является символьным кодом для A..Z. Посмотрев на character table, мы можем видеть, что эти значения находятся в диапазоне [0x41, 0x5a] и отмечают, что [0x61, 0x7a] - соответствующие строчные буквы. Таким образом, мы можем пойти {A, B .. Z} -> {a, b .. z}, добавив 0x20 (или 32) к символьному коду буквы верхнего регистра.
Также можно заметить, что при добавлении 32 (или 1 < < 5) к ряду без 5-й набор битов (например, число в диапазоне [0x41, 0x5a]) может быть достигнуто с побитового или с 1 < < 5 (т.е. x | 32). Вот почему |
и +
взаимозаменяемы здесь. Добавление 32 (т. Е. X + 0x20), возможно, более понятно, даже если оба оператора будут вести себя эквивалентно по правилам выше.
В любом случае, если знать последствия производительности любой из этих подходов, тест Кодекса в полном комплекте (и в контексте) на соответствующих/целевых средах.
Оператор x | y
является всегда побитового или (с помощью [ToInt]
конверсии), но x + y
может быть конкатенации.
Результаты будут такими же только тогда, когдаx
и y
не оба числа (или, скорее, ни является строкой), могут быть конвертированы с помощью [ToInt]
, не имеют нет набор битов в общем, и в диапазон около [0, 2^32] или около того.
добавить вещи? добавить что-то? | побитовое или, + является арифметическим добавлением или конкатенацией строк – Kokizzu
Базовая арифметика. Есть ли ограничение производительности? – Abilash
Не могли бы вы предоставить код, где вы это видите? – treeface