Для обращения строки в соответствии с приведенным выше требованием ниже приведены шаги:
vReversedString
noitamotuA ssecorP toboR olleH
my-list-variable
my-list-variable
noitamotuA
, при обратном обращении вы получите Automation
в качестве вывода, сохраните его в системную переменную clipboard
или создадите новую переменную для хранения каждого элемента. vReversedString
= $vReversedString$
$clipboard$
JavaScript был предназначен для очень простых сценариев в браузере. Требование объявлений переменной казалось ненужным.
Конечно, это - ошибка на языке. И производители JavaScript знают это. Они хотели изменить его. Но они не могли. Почему?
Поскольку Microsoft уже перепроектировала JavaScript и создала их дублирующийся JScript с ошибками и так далее. Microsoft наложила вето на любые изменения, даже bugfixes, так как они были непреклонны по отношению к не повреждению anyones сценарии. Таким образом, даже если бы они изменили JavaScript, то JScript в IE остался бы таким же.
Это не серьезное основание. Но это - то, которое мы имеем.
Источник: Я получил свой класс истории JavaScript от Douglas Crockford: "Язык программирования JavaScript", http://video.yahoo.com/watch/111593/1710507 Эта часть истории между 9 и 11 минутами в видео.
Серьезные основания? Честно не может думать один, это - одна из нескольких вещей, которые я действительно не люблю о JS.
Это возможно, потому что все происходит в глобальной области видимости, если не иначе управляемый и JS позволяет неявное переменное создание как это. Стоимость этого является огромным потенциалом для обзора ошибок и загрязнения, и только извлеките выгоду, учитывая, что "это" существует для явного определения сам, объем и "окно" и "документ" существуют для глобальной ссылки, сохраняет несколько символов - который не является никакой причиной вообще.
Поскольку это - язык сценариев. Дети факта. И именно так это было разработано!
Мой вопрос, 'почему позволяется в JavaScript использовать переменную непосредственно, не объявляя это', поскольку большинство языков программирования имеет строгую проверку на этом.
Вот в чем разница между статически и динамически типизированные языки. JavaScript с динамическим контролем типов, таким образом, нет никакой потребности объявить сначала. Поскольку на это указали в других ответах, var
ключевое слово более ответственно за объем переменной, чем ее объявление.
И я не думаю, что большинство языков программирования имеет проверку на этом.
Lua имеет подобную проблему: любая незаявленная переменная глобальна по умолчанию. В списке рассылки это - повторяющаяся тема, спрашивая, почему это не должно быть 'локально по умолчанию'. к сожалению, это представило бы очень противные неоднозначности на языке, таким образом, заключение обычно "глобально, по умолчанию плохо, локален, по умолчанию хуже"