Подтвердить что ты не робот

В JavaScript, какой код выполняется во время выполнения и какой код выполняется в режиме parseime?

С особенностями объектов я не понимаю, какие части объекта запускаются до инициализации, что выполняется при инициализации и что запускается когда-то после.

ИЗМЕНИТЬ: Кажется, что parseime - неправильное слово. Думаю, я должен был сформулировать вопрос "В двухпроходном чтении, что прочитает первый проход и что прочитает второй проход?"

4b9b3361

Ответ 1

Файл javascript запускается в двухпроходном режиме чтения. Первый проход анализирует синтаксис и собирает определения функций, а второй проход фактически выполняет код. Это можно увидеть, отметив, что работает следующий код:

foo();

function foo() {
  return 5;
}

но следующее:

foo(); // ReferenceError: foo is not defined

foo = function() {
  return 5;
}

Однако это не очень полезно знать, так как в первом проходе нет никакого выполнения. Вы не можете использовать эту функцию, чтобы полностью изменить свою логику.

Ответ 2

Не уверен, что именно вы спросите, поэтому я просто расскажу то, что знаю.

Функции JavaScript "предварительно загружены" и хранятся в памяти браузера, что означает, что когда у вас есть функция, объявленная в самом конце страницы, и код, вызывающий ее в самом начале, будет работать.

Обратите внимание, что глобальные переменные, означающие любую переменную, назначаемую вне функции, не предварительно загружаются, поэтому могут использоваться только после объявления.

Все команды вне функции будут проанализированы в том порядке, в котором они отображаются.

JavaScript не имеет "среды выполнения", он может реагировать только на события или выполнять код с помощью глобальных таймеров. Любой другой код будет проанализирован и "забыт".

Ответ 3

Хотя непосредственный предок JavaScript - это схема, JavaScript не наследовал макросы, поэтому ответ довольно прост: во время разбора никогда не запускается какой-либо код.

Ответ 4

В отличие от С++, невозможно запустить логику в парсера Javascript.

Я подозреваю, что вы спрашиваете, какой код запускается сразу и какой код запускается при создании каждого экземпляра объекта.

Ответ заключается в том, что любой код в вызываемой функции будет запускаться только при вызове функции, тогда как любой код вне функции будет выполняться немедленно.

Ответ 5

Грубо говоря, Interpreter сначала получает все переменные и функции, а затем они поднимаются и выполняются.

Для более подробной информации я надеюсь, что эти ссылки могут быть полезны: