Каков порядок выполнения кода в Javascript?
Как именно выполняется код в 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 ответа
var render = new function(){
// same code here
}
new
Ключевое слово не создает новую функцию. Он создает новый объект, запустив функцию. Так что это фактически запустит тело метода и вернет объект.
Если вы спрашиваете, когда функции анализируются и добавляются в область видимости, то это зависит от реализации, но все функции поднимаются в верхнюю часть области и обычно анализируются перед выполнением любого кода.
Функции выполняются только тогда, когда вы вызываете их, вызывая f()
Объявление функции поднято (поэтому оно может быть вызвано ранее в коде, а затем определено), а выражение функции - нет.
Выполняет ли JavaScript функции, которые определены в файле сценариев, независимо от того, вызываются ли они обработчиком событий?
Функция вызывается, когда она вызывается. Либо потому что что-то имеет theFunction
с последующим ()
(возможно, с аргументами) или потому что он был сделан обработчиком событий.
onload="function"
Если это JS, то он назначит строку для чего-то, ожидающего функцию. Если это HTML, то вам нужно ()
вызвать функцию.
И, наконец, если функция определена в другой функции, когда вызывается родительская функция, также вызывается ли нижняя функция?
Нет. Функция вызывается только тогда, когда она вызывается. Объявление функции внутри другой просто ограничивает ее область действия.
Когда вы объявляете функцию, она не выполняется до тех пор, пока она не будет вызвана (это верно и для тех, которые объявлены в onload и других событиях).
Для вложенных функций они не выполняются автоматически, когда функция верхнего уровня вызывается, пока содержащая их функция не вызывает их.