[S3L2] JS Closure, Callback, Flashcards
Was ist ein Closure?
-Eine Mischung aus Function und Lexical Environment in der die Function deklariert ist
Was für ein Scope wird mit einer Function Deklarierung erschaffen?
-Ein Functional Scope
Können Variablen und Functionen einer Function im Context nach außen oder weiter nach Innen zugreifen?
- NACH AUßEN und niemals weiter nach Innen.
- Egal wie tief genested wird, das bleibt immer so.
Erkläre an folgenden Code welchen Scope was hat: const foo = 'bar'; function returnFoo () { return foo; } returnFoo();
const foo is GLOBAL function returnFoo is GLOBAL
return foo is FUNCTION SCOPE und hat access auf alles äußere
Was tut diese wichtige Funkion in Bezug auf Closure? let count = 0; return function() { return ++count; } };
const newCounter = counter(); const newCounter = counter();
- Zählt bei jedem Aufruf hoch und resetted nicht direkt!
- Es erinnert sich an den vorherigen Wert
Was ist ein Callback?
- Das Passing von einer Function in eine Function als Parameter
- Functional Programming Paradigma
Was bedeutet es dass in Javascript alle Function First Class Citizen sind?
- Das man eine Function in einer Variable speichern kann und dann diese Referenz herumpassen kann wie eine Variable
- Als wären Functions ein primitiver Datentyp (String, Bool, Number)
Was macht ein Callback als Paramter? function(callback) {.. }
-Der Callback Parameter wartet darauf als Argument eine Function überliefert zu bekommen
Was ist eine Function?
-Eine Anleitung um eine Aufgabe zu erledigen
Wie sieht eine FunctionFeeder Function aus?
const functionFeeder = function(callback) { callback('Hello from the inside of Function Feeder'); };
functionFeeder(function(greeting) {
console.log(greeting);
});
Was ist ein Beispiel für ein Callback?
function sayHello(name) { console.log(`Hello, ${name]`); }
function callSayHelloWithLars(callback) { const innerName = 'Lars': callback(innerName); }
callSayHelloWithLars(sayHello);
//Hello, Lars
- Man ruft die CallbackFunction mit der ersten Function auf
- callback((innerName) setzt dann Lars als Argument für sayHello(name) und gibt daher die String Interpolation aus
Wie sieht eine forEach Function für ein Array aus?
const forEach = () => { magic }
Wie kann man sich eine eigene ForEachFunction mit Callback schreiben die man einem Iterator mitübergeben kann?
const newForEach = (list, callBack) => { for(let i = 0; i
Erkläre was genau in diesem Code geschieht: const elements = ['sonne', 'mond'];
const newForEach (list, callBack) => { for(let i = 0; i < list.length; i++) { callBack(list{i], i); } };
const iterator = function(item, index) { console.log(item, index); }
newForEach(elements,iterator);
- Jedes Mal wenn der For Loop läuft
- Basierend auf dem übergebenen Array
- Möchte ich das aktuel iterierte Item des Arrays
- An die übergebene CallBack Function geben
Daher wird durch den Aufruf die iterator Function übergeben, welches jedes Element und ihren Index logt.
Erkläre folgenden Code Snippet:
const elements = [‘sonne’, ‘mond’];
function showFirst(array, callback) { callback(array[0]); }
showFirst(elements, (firstItem) => {
console.log(firstItems);
});
- Es wird die Function ShowFirst aufgerufen mit dem Array und einer anonymen Function als Argument
- In der ShowFirst Function wird durch den callback auf das erste Element des übergebenes Arrays der Funktion zugegriffen und es geprinted