Почему не обязательно объявлять переменную в 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 аналогичная проблема: любое не объявленная переменная является глобальной по умолчанию. В списке рассылки это повторяющаяся тема, спрашивающая, почему она не должна быть "локальной по умолчанию". к сожалению, это приведет к очень неприятным двусмысленностям в языке, поэтому вывод обычно "глобальный по умолчанию плох, локальный по умолчанию хуже"