Vad är ordningen för kodens körning i Javascript?
Hur exakt körs kod i JavaScript? Jag menar i vilken ordning? Skulle det vara någon skillnad i körordningen om jag deklarerade en funktion på det här sättet:
function render() {
// Code here
}
istället för detta:
var render = new function(){
// Same code here
}
Kör JavaScript funktioner som är definierade i en skriptfil oavsett om de kallas av en händelsehanterare? (t.ex. onload=function()).
Och slutligen, om en funktion definieras i en annan funktion, när den överordnade funktionen anropas, anropas då den underliggande funktionen också? t.ex.
function a(){
function b(){
// code
}
function c(){
//code
}
}
Jag försöker få en konkret förståelse av exekveringsordningen i JavaScript.
Svar #1
var render = new function(){
// same code here
}
Nyckelordet new skapar inte en ny funktion. Det skapar ett nytt objekt genom att köra funktionen. Så detta skulle faktiskt köra metodens kropp och returnera ett objekt istället.
Om du frågar när funktioner analyseras och läggs till i scope så är det implementation-specifikt, men alla funktioner förs till toppen av scope och analyseras generellt innan någon kod körs.
Funktioner utförs endast när du anropar dem genom att anropa f()
Svar #2
En funktionsdeklaration höjs upp (så att den kan kallas tidigare i koden än när den är definierad), en funktionssats gör det inte.
Utför JavaScript funktioner som är definierade i en skriptfil oavsett om de anropas av en händelsehanterare?
En funktion kallas när den anropas. Antingen för att något har theFunction följt av () (eventuellt med argument) eller för att den har gjorts till en händelsehanterare.
onload="function"
Om det är JS, kommer det då att tilldela en sträng till något som förväntar sig en funktion. Om det är HTML, behöver du () för att kalla på funktionen.
Och slutligen, om en funktion är definierad i en annan funktion, när den överordnade funktionen anropas, anropas den underordnade funktionen också?
Nej. En funktion kallas endast när den blir kallad. Att deklarera en funktion inuti en annan begränsar bara dess räckvidd.
