Предварительная экспланация с ключевым словом VAR
Давайте сначала посмотрим на результаты этого выполнения кода:
Кода -копия выглядит следующим образом:
оповещение (n); // неопределенное всплывающее окно
var n = 10;
Результат всплывающего окна не определен, почему не 10? Давайте посмотрим на следующие результаты выполнения кода:
Кода -копия выглядит следующим образом:
предупреждение (n);
n = 10;
Отчет о операции выглядит следующим образом:
Почему отчет об ошибке на этот раз состоит в том, что при запуске кода переменная n не объявлена; Благодаря сравнению этих двух частей кода мы обнаруживаем, что существует разница между переменными с ключевыми словами и переменными VAR без ключевых слов VAR. До того, как код будет выполнен, браузер, похоже, дал им первоначальное значение неопределенным. Поэтому, прежде чем код будет выполнен, процесс двигателя браузера автоматически сканирует переменные с помощью ключевых слов VAR и ключевых слов функции, а также определенные функции и функции до выполнения кода называется предварительной интерпретацией.
Предварительная экспланация с ключевым словом функции
Давайте посмотрим на следующие результаты выполнения кода:
Кода -копия выглядит следующим образом:
fn (); // popt hello
функция fn () {
оповещение («Привет»);
}
Результат выполнения появляется привет, и FN может быть выполнен нормально. Причина в том, что FN предварительно планируется до выполнения кода. FN был определен во время предварительной эксплане. У нас снова есть вопросы, почему первое результат выполнения кода не появляется 10, но не определен, и еще одна концепция снова вводится.
Объявить и определить в JavaScript
Мы обычно используем клавишу VAR для объявления переменных и используем ключевое слово функции для определения функций. Тем не менее, ключевое слово функции объявляет и определяет функции одновременно, в то время как VAR может объявлять только переменные и не имеет функции определения.
Ниже приведены переменные, объявленные ключевым словом VAR:
Кода -копия выглядит следующим образом:
var n; // объявить переменную n
var m = 10; // объявить переменную m и назначить 10
Ниже приведены функции, определенные с помощью ключевого слова функции:
Кода -копия выглядит следующим образом:
// Определите функцию FN
функция fn () {
оповещение («Привет»);
}
Разница между предварительной экспланацией ключевых слов VAR и ключевыми словами функции
Фактически, разница между ними заключается в том, что при предварительном эксплуатации с помощью ключевого слова VAR можно предварительно эксплуатировать только часть объявления (потому что она не имеет возможности определять себя), в то время как при предварительном сплитке с ключевым словом функции декларация и определение предварительно выведены одновременно. Затем мы снова проанализируем первый код и проанализируем его следующим образом:
Предварительная экспланация нетрадиционности (мошенничество)
Почему это нетрадиционно? Пожалуйста, смотрите следующий код (кроме Firefox):
Кода -копия выглядит следующим образом:
предупреждение (n);
fn ();
if (false) {
var n = 10;
функция fn () {
оповещение («Привет»);
}
}
Undefined появится в первой строке выполнения кода, а Hello появится во второй строке выполнения кода; Потому что N и FN предварительно выведены до выполнения кода. Даже если условие считается ложным, постоянный двигатель браузера сканирует переменную N, объявленную ключевым словом VAR и FN с определением функционального ключа.
*Предварительная интерпретация игнорирует повторное выполнение, а не переопределение
Поскольку это место относительно запутано и не легко понять, оно добавило звездочку, см. Следующий код:
Кода -копия выглядит следующим образом:
предупреждение (n);
var n = 10;
var n = 9;
var n;
предупреждение (n);
Каков результат выполнения этого кода? Давайте проанализируем это:
Продолжайте загружать код, проанализируйте следующие результаты выполнения:
Кода -копия выглядит следующим образом:
fn ();
функция fn () {
оповещение ('1');
}
fn ();
функция fn () {
оповещение ('2');
}
fn ();
Схема анализа кода выглядит следующим образом:
Функция предварительного экспланационного анализа с определением функции
Суммировать:
В этом блоге используется большой кусок кода и скриншотов для обзора предварительной интерпретации в JavaScript. Глядя на различные книги, очень мало описаний предварительных интерпретаций. На самом деле, в работе не так много сценариев. К сожалению, предварительные интерпретации являются обязательными в вопросах интервью для крупных компаний. Когда я впервые вступил в контакт с ним, я почувствовал, что он всегда не пишет код в соответствии с здравым смыслом, но иногда он может работать нормально и не сообщать об ошибке. Конечно, это также увеличило наше исследование своей тайны и позволило нам дополнительно понять, как двигатель браузера объясняет и выполняет наш код. Я буду использовать несколько классических случаев, чтобы проанализировать его в последующих сообщениях в блоге. Еще раз спасибо за вашу поддержку!