В JavaScript VAR используется для объявления переменных, но этот синтаксис не требуется строго. Много раз мы можем напрямую использовать переменную без использования VAR для ее объявления.
Кода -копия выглядит следующим образом:
var x = "xx";
y = "xxx";
И так далее. Есть проблема с этим. Например, в строке в коде я хочу использовать объявленную переменную x. В результате, из -за ошибок ввода или орфографии, эта переменная написана как Y. Результат эквивалентен «неявному» объявлению переменной y. В реальном программировании эта ошибка иногда трудно обнаружить.
Когда вы делаете это «неявное» объявление в текущем контексте, двигатель JavaScript сначала будет искать, была ли эта переменная была объявлена ранее в текущем контексте. Если нет, то ищите на предыдущем уровне контекста. Если он не был найден, это наконец объявит эту переменную в окне!
например:
Код заключается в следующем:
окно. y = "Привет"; function func () {y = "О, нет !!!"; } func (); предупреждение (window.y); //#=> отображать "О, нет !!!"Когда любой слой в контексте имеет такое «неявное» определение переменной, переменная этого слоя будет изменена без создания новой переменной в окне. (Этот вид ошибки довольно раздражает, особенно инкапсулированный более сложный код)
например:
Код заключается в следующем:
var x = "window.x"; функция a () {var x = "a's x"; var b = function () {var c = function () {// no var! x = "c's x:"; }; оповещение («До запуска c, bx:» + x); c (); оповещение ("после c запустить, bx:" + x); }; оповещение ("AX IS:" + x); b (); Alert («после B -функции run, топор:« + x); }; Alert («Перед пробежкой, window.x:» + x); a (); Alert ("После запуска, window.x:" + x);Здесь есть следующие слои: Window, func A, Func B, Func C всегда вложено на уровне. окно-> a-> b-> c
И окно, и определяют переменную x, и B не определены. A x объявляется в C, что в конечном итоге изменяет значение переменной a.
Помните, что в JavaScript объявите переменные, и вы должны добавить VAR перед ним.