Могу согласится, что undefined - не нужная часть языка, но бросать исключение не имеет смысла, потому-что ECMAScript - динамический язык.
В динамическом языке, вы не знаете - с чем работаете, что не правда в статических, как C и Rust. Даже если null и undefined - одно и тоже (исключая сравнения ===), это не отменяет концепт неинициализированных переменных.
Не имеет смысла бросать исключения на тип, который вы не можете знать.
Могу согласится, что
undefined- не нужная часть языка, но бросать исключение не имеет смысла, потому-что ECMAScript - динамический язык.В динамическом языке, вы не знаете - с чем работаете, что не правда в статических, как
CиRust. Даже еслиnullиundefined- одно и тоже (исключая сравнения===), это не отменяет концепт неинициализированных переменных.Не имеет смысла бросать исключения на тип, который вы не можете знать.