В некоторых C-подобных языках программирования каждый фрагмент кода в кудрявых брекетах имеет свой собственный объем, а переменные невидимы за пределами сегмента кода, который их объявляет. Мы называем сферу блока, и в JavaScript не существует масштабов блоков. Вместо этого Javascript использует область функции: переменные определяются в организме функции, который объявляет его, и в любом корпусе функции, вложенном в тело функции. В следующем коде I, J и K, определенные в разных местах, определены в одном и том же объеме.
Кода -копия выглядит следующим образом:
Функциональный текст (O)
{
var i = 0;
оповещение (тип O);
if (typeof o == "String")
{
var j = 0;
для (var k = 0; k <10; k ++)
{
оповещение (k); // Выход 0-9
}
предупреждение (k); // Выход 10
}
Alert (j); // Выход 0
}
Область функции JavaScript означает, что все переменные, объявленные внутри функции, всегда видны в организме функции. Интересно, что это означает, что переменные даже доступны до того, как они будут объявлены. Эта функция JavaScript неофициально называется поднятием, то есть все переменные, объявленные в телефонах JavaScript (без назначения), «продвинуты» к вершине функции. Посмотрите на следующий код
Кода -копия выглядит следующим образом:
var global = "globas";
Функция Globals ()
{
предупреждение (Global); // не определен
var global = "hello qdao";
Alert (Global); // Hello Qdao
}
Из -за характера сферы функции локальные переменные всегда определяются во всем организме функции, что означает, что переменные внутри функционального тела охватывают глобальные переменные с одним и тем же именем. Несмотря на это, локальные переменные будут по -настоящему назначены, когда программа выполняет оператор VAR. Следовательно, приведенный выше процесс эквивалентен: объявление переменных в функции «продвижение» в верхней части тела функции и оставление инициализации переменных коллеги в исходной позиции:
Кода -копия выглядит следующим образом:
var global = "globas";
Функция Globals ()
{
var global;
предупреждение (Global); // не определен
Global = "Привет Qdao";
Alert (Global); // Hello Qdao
}