Ничего расплывчатого. Язык представляет действия для машины. Язык, который этот представление выполняет ближе к намерениям пользователя, удобнее.
Ошибки обычно возникают там, где пользователь явного намерения не обозначил (пробел в намерениях). И у языка есть выбор либо сообщить об этом пробеле, либо попытаться его заполнить.
JS пытается заполнить сам. Чем (1) не стимулирует этот пробел заполнить в тексте программы (для коллег и будущего себя) и (2) регулярно ошибается и делает что-то не то, информация о чём всплывает уже сильно дальше места, где этот пробел был.