Execution Context - zasada działania i Execution Stack

0
const temp = 10 // global context
const old = 5 // global context

function first() { 
	console.log("FIRST")
	
  function second() {
  	console.log("SECOND")
  }
  
  second() // second functional context
}

first() // first functional context

Zgodnie z zasadą Execution Stack na stos trafią konteksty dla powyższego kodu w takiej kolejności: global context -> first functional context -> second functional context. Natomiast usuwane ze stosu i wykonywane konteksty będą w takiej kolejności: second functional context -> first functional context -> global context

I nie mogę zrozumieć jednego skoro second functional context wykonuje się jako pierwszy to console.log("SECOND") powinien też wykonywać się jako pierwszy co nie miałoby większego sensu. Mógłby mi to rozjaśnić jak to jest, że kod js wykonuje się w odwrotnej kolejności niż usuwanie kontekstów z Execution Stack?

0

@sajek587: Console.log w second() wykona się jako drugi, ponieważ wywołujesz funkcję first, która wyświetla "FIRST", a dopiero później uruchamia funkcję second(), która wyświetla "SECOND".

skoro second functional context wykonuje się jako pierwszy to console.log("SECOND") powinien też wykonywać się jako pierwszy

Nie. second() wykona się jako drugi, bo najpierw uruchamiasz funkcję wyświetlającą "FIRST" i ta funkcja, dopiero wyświetla "SECOND". Jesli console.log("FIRST") będzie znajdywało się po second() to wtedy "SECOND" wyświetli się pierwsze, a dopiero później "FIRST". Kod JS wykonuje się linijka po linijce (były jakieś wyjątki ale nie pamiętam na czym to polegało, może ktoś bardziej doświadczony to uzupełni).

1 użytkowników online, w tym zalogowanych: 0, gości: 1