Я наткнулся на чрезвычайно странное происшествие в Javascript, из которого я не могу сделать голову или хвост.
Вот очень простое if
утверждение:
let hours = 20;
Я поставил точку останова и установил hours = 0
в отладчике. Я проверяю !hours
в отладчике, чтобы подтвердить, что результат true
, и нажимаю продолжить, чтобы выполнить инструкцию if
.
if (!hours) {
console.log("Hours is false: " + hours);
} else {
console.log("Hours is true: " + hours);
}
Ожидаемый результат для записи:
Часы ложны: 0
Фактический результат зарегистрирован:
Часы истинны: 0

^ Мышь находится над hours
, поэтому текущее значение отображается
Это происходит только тогда, когда hours
изначально было установлено в целое число, а затем установите 0 в отладчике. Есть ли у Javascript какое-то неясное правило о том, что истинные значения сохраняют свой статус даже после изменения?
Или это несоответствие между отладчиком и кодом (которое, если оно истинно, в основном нарушило бы точку консоли )?
С какой стати это происходит?