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