JavaScript · Middle · Frage 4 von 75
Was gibt dieser Code nach einer Sekunde aus?
const timer = {
seconds: 10,
start() {
setTimeout(function () { console.log(this.seconds); }, 1000);
},
};
timer.start();- 1
undefined: ein normaler Callback hat sein eigenesthis - 2
10: der Callback bekommtthisvon der Methodestart - 3
ReferenceError:thisist in einem Timer nicht verfügbar
Antwort zeigen
Richtige Antwort: undefined: ein normaler Callback hat sein eigenes this
Erklärung
Der Timer ruft den Callback ohne Kontext auf, also ist this nicht timer. Eine Arrow Function () => console.log(this.seconds) würde this von start übernehmen und 10 ausgeben. Das ist der klassische Fall, in dem Arrow Functions nützlich sind.