Che cos’è esattamente il “Contesto di esecuzione” in JavaScript?

Il mio titolo praticamente riassume tutto.

Qualcuno può illuminarmi su …

“Qual è il ‘Contesto di esecuzione’ in JavaScript?”

e su come si relaziona a “questo”, sollevamento, prototipo concatenamento, scope e garbage collection?