Здравствуйте, Privalov, Вы писали:
P>Ну да, слабая типизация во всей красе. P>Такое впечатление, что JS сделан так, чтобы программы на нем никогда не падали. Это даже круче VB6, в котором, по крайней мере, надо было on error resume next писать.
... P>А JS в любом случае отработает. Боюсь себе представить, как он себя в более сложными, чем числа, объектами ведет.
Как напишешь, так и ведёт. Если ты пишешь хитромудрые конструкции, то любые ожидания будут неадекватными.
Нужно использовать оболочку навроде TypeScript для статической типизации и писать нормальный код без хитромудрых конструкций.
Часть этих хитромудрых конструкций действительно дает короткий и эффективный код. Но дизайн этих вещей никогда не был и не будет консистентным, фактически, их никто не проектировал. Соответственно, неосмотрительные эксперименты нежелательны.
Много способов получить ошибку на ровном месте, тем не менее, вагон и маленькая тележка получить читаемый код который соответствует ожиданиям.
Например, в C/С++ промахиваясь по массиву, ты затираешь чужую память. В шарпе или джаве — получаешь исключение. В жээсе память не затирается, в зависимости от кода можешь получить что угодно.
Фиксится лекго — просто добавляешь явную проверку на границы массива, если расширяешь массив, делаешь это явно и не абы каким числом и тд.