Когда я вижу выражение
let a : number = 3;
a = a + 5;
, я немедленно изменяю его на
let a : number = 3;
a += 5;
, и в обоих случаях результат равен a === 8 (Я добавил тип переменной для ясности). Однако логическое выражение того же шаблона
let b : boolean = false;
b = b || true;
не эквивалентно
let b : boolean = false;
b |= true;
, поскольку оно создает число. Теперь число коррелирует с true , так как оно ненулевое (и наоборот, оно соответствует false в противоположном случае, так как возвращает ноль). Так что, конечно, есть определенная логика c.
Меня беспокоит, что я не могу объяснить, почему это происходит.
Все примеры были выполнены в Chrome. консоль, и я не совсем уверен, происходит ли преобразование в число из логического из-за моей операции или воспроизведения в браузере или, возможно, чего-то еще.