Самое главное, что вы действительно не все хотите создать переменную случайно. В сценариях нормально, что переменные создаются в назначении, но в рабочем коде это одно из самых больших зол, с которыми вы можете столкнуться. Я не буду рассматривать язык, который позволял использовать эту конструкцию в производственном коде.
Я провел собеседование в нескольких местах, где использовались Visual Basic, где они задавали вопрос «Какая первая строка в любом VB-файле», и если вы не ответили «OPTION EXPLICIT», интервью тут же прекратилось. (OPTION EXPLICIT запрещает создание переменных посредством присваивания в VB и вызывает явное "dim")
Вот пример того, почему это плохо. Это запустится (без провала утверждения), если вы скопируете следующий код и вставите его в скрипт groovy:
bill = 7
bi1l = bill + 3
assert bill == 7
Это также устраняет некоторые возможности компилятора, чтобы помочь вам рефакторинг. Например, если вы переименуете место, где вы впервые используете переменную, как компилятор узнает, что второе использование (присваивание) теперь является ошибкой, а не новой переменной?
Дерьмо, как это слишком опасно. Даже если это всего лишь один раз в вашей жизни, это все равно будет стоить больше времени, чем явное объявление переменных тысячи раз на протяжении вашей карьеры. Глазу становится ясно, где именно его отрывают, не нужно догадываться.
В сценариях это вполне нормально, потому что область действия сценария ограничена, и они не используются повторно и не поддерживаются столько, сколько переписаны, но язык, который позволяет создавать назначение, просто не готов к производству.