Каков порядок выполнения кода в Javascript? - PullRequest
6 голосов
/ 21 июля 2011

Как точно выполняется код в JavaScript?Я имею в виду, в каком порядке?Будет ли разница в порядке выполнения, если я объявлю функцию, подобную этой:

function render() {
    // Code here
}

вместо этого:

var render = new function(){
    // Same code here
}    

Выполняет ли JavaScript функции, определенные в сценариифайл независимо от того, вызваны ли они обработчиком события?(например, onload=function()).

И, наконец, если функция определена в другой функции, когда вызывается родительская функция, также вызывается ли нижняя функция?например,

function a(){

    function b(){
        // code
    }

    function c(){
        //code
    }

}

Я пытаюсь получить конкретное понимание порядка выполнения в JavaScript.

Ответы [ 3 ]

4 голосов
/ 21 июля 2011

Объявление функции поднято (поэтому оно может быть вызвано раньше в коде, а затем определено), а выражение функции - нет.

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

Функция вызывается при ее вызове.Либо потому, что у чего-то есть theFunction, за которым следует () (возможно, с аргументами), либо потому, что это было сделано обработчиком события.

onload="function"

Если этоэто JS, тогда он назначит строку для чего-то ожидающего функцию.Если это HTML, тогда вам нужно (), чтобы вызвать функцию.

И, наконец, если функция определена в другой функции, когда вызывается родительская функция, также вызывается и нижняя функция?

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

3 голосов
/ 21 июля 2011
var render = new function(){
  // same code here
}

Ключевое слово new не создает новую функцию. Он создает новый объект, запустив функцию. Так что это фактически запустит тело метода и вернет объект.

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

Функции выполняются только , когда вы вызываете их, вызывая f()

0 голосов
/ 21 июля 2011

Когда вы объявляете функцию, она не выполняется до тех пор, пока она не будет вызвана (это верно и для тех, которые объявлены в onload и других событиях).

Для вложенных функций они не выполняются автоматически, когда top-Функция уровня вызывается до тех пор, пока их не вызывает содержащая их функция.

...