Почему не обязательно объявлять переменную в Javascript перед ее использованием?

в Javascript нам не нужно объявлять переменную с var ключевое слово перед его использованием. Мы можем сразу делать такие вещи, как myCount = 12; или myStr = "Hello"; (где myCount, myStr не объявляются раньше). Любое такое использование, объявляет и инициализирует переменные в глобальной области видимости.

каковы могут быть причины для предоставления этой функции? И это вообще хороший стандарт?

обновление: мой вопрос не в том, что различия между использованием переменная без объявления " и "объявление, а затем использование"и как это влияет на область.

мой вопрос: "почему в javascript разрешено использовать переменную напрямую, не объявляя ее" , поскольку большинство языков программирования строго проверяют это.

обновление: я вижу следующий цитируемый текст как плохой эффект этой функции. Так зачем эта функция вообще?

"предположим, что существует глобально объявленная переменная x (var x="comparison string") уже о котором я не знаю, и я с намерением создать свой собственный глобальный " x " внутри одной из моих функций инициализирую один (x=-1) и там я в конечном итоге нарушение других функций.

Итак, есть ли вообще какая-то веская причина? за эту функцию?

5 ответов


JavaScript был предназначен для очень простых скриптов в браузере. Требование объявления переменных казалось излишним.

конечно, это ошибка в языке. И создатели javascript знают это. Они хотели изменить его. Но они не могли. Почему?

потому что Microsoft уже реверсировала JavaScript и создала свой дубликат JScript с ошибками и всем остальным. Microsoft наложила вето на любые изменения, даже исправления ошибок, поскольку они были непреклонны в том, чтобы не нарушать ничьего скрипты. Поэтому, даже если они изменили JavaScript, JScript в IE останется прежним.

Это не очень хорошая причина. Но она у нас есть.

Источник: я получил свой класс истории javascript от Дугласа Крокфорда: "язык программирования JavaScript",http://video.yahoo.com/watch/111593/1710507 Эта часть истории находится между 9 и 11 минутами в видео.


веские причины? Честно говоря, не могу придумать, это одна из немногих вещей, которые мне действительно не нравятся в JS.

это возможно, потому что все происходит в глобальной области, если не контролируется иначе, и JS позволяет создавать неявные переменные, как это. Стоимость этого-огромный потенциал для определения области ошибок и загрязнения, и только выгода, учитывая, что" это "существует для явного определения собственной области, а" окно "и" документ " существуют для глобальных ссылок, сохраняет несколько символов - что вовсе не причина.


мой вопрос: "почему в javascript разрешено использовать переменную напрямую, не объявляя ее" , поскольку большинство языков программирования строго проверяют это.

в этом разница между статически и динамически типизированных языков. Javascript динамически типизирован, поэтому нет необходимости объявлять первым. Как указывалось в других ответах, var ключевое слово более ответственно за область переменной, чем ее объявление.

и Я так не думаю!--8-->большинство языков программирования проверьте это.


Lua аналогичная проблема: любое не объявленная переменная является глобальной по умолчанию. В списке рассылки это повторяющаяся тема, спрашивающая, почему она не должна быть "локальной по умолчанию". к сожалению, это приведет к очень неприятным двусмысленностям в языке, поэтому вывод обычно "глобальный по умолчанию плох, локальный по умолчанию хуже"


потому что это скриптовый язык. Дети фактов. Вот как это было задумано!