передумал ответ, почему проблема в let не знаю, но корни оттуда
for (let a = 0; a<10000;a++){console.log(typeof null === 'object');}
4099: true
5901: false
for (var a = 0; a<10000;a++){console.log(typeof null === 'object');}
10000: true
И ваше сравнение typeof null === 'undefined' все равно не работает, так как не смотря на официально заявленное typeoff null - object является ошибкой, там нет undefined
В дополнение к тому, что это поведение именно браузера и его неопределенность скрипт запущенный в ноде:
'use strict';
let valTrue = 0;
let valFalse = 0;
for(let a = 0; a< 10000;a++){
if(typeof null === 'object') {
valTrue++;
}else {
valFalse++;
}
}
console.log('TRUE: '+valTrue+' FALSE: '+valFalse);
Результат TRUE: 10000 FALSE: 0