[S3L2] JS Closure, Callback, Flashcards

1
Q

Was ist ein Closure?

A

-Eine Mischung aus Function und Lexical Environment in der die Function deklariert ist

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was für ein Scope wird mit einer Function Deklarierung erschaffen?

A

-Ein Functional Scope

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Können Variablen und Functionen einer Function im Context nach außen oder weiter nach Innen zugreifen?

A
  • NACH AUßEN und niemals weiter nach Innen.

- Egal wie tief genested wird, das bleibt immer so.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
Erkläre an folgenden Code welchen Scope was hat:
const foo = 'bar';
function returnFoo () {
return foo;
}
returnFoo();
A
const foo is GLOBAL
function returnFoo is GLOBAL

return foo is FUNCTION SCOPE und hat access auf alles äußere

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
Was tut diese wichtige Funkion in Bezug auf Closure?
let count = 0;
return function() {
return ++count;
}
};
const newCounter = counter();
const newCounter = counter();
A
  • Zählt bei jedem Aufruf hoch und resetted nicht direkt!

- Es erinnert sich an den vorherigen Wert

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist ein Callback?

A
  • Das Passing von einer Function in eine Function als Parameter
  • Functional Programming Paradigma
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was bedeutet es dass in Javascript alle Function First Class Citizen sind?

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was macht ein Callback als Paramter? function(callback) {.. }

A

-Der Callback Parameter wartet darauf als Argument eine Function überliefert zu bekommen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was ist eine Function?

A

-Eine Anleitung um eine Aufgabe zu erledigen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie sieht eine FunctionFeeder Function aus?

A
const functionFeeder = function(callback) {
callback('Hello from the inside of Function Feeder');
};

functionFeeder(function(greeting) {
console.log(greeting);
});

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist ein Beispiel für ein Callback?

A
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wie sieht eine forEach Function für ein Array aus?

A

const forEach = () => { magic }

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie kann man sich eine eigene ForEachFunction mit Callback schreiben die man einem Iterator mitübergeben kann?

A
const newForEach = (list, callBack) => {
for(let i = 0; i
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
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);

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Erkläre folgenden Code Snippet:

const elements = [‘sonne’, ‘mond’];

function showFirst(array, callback) {
callback(array[0]);
}

showFirst(elements, (firstItem) => {
console.log(firstItems);
});

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was sind die Prototype Methods eines Arrays?

A
  • Die Methoden die jedes Array von Haus aus mitbringt

- Kann man auf MDN nachschauen

17
Q

Ist die forEach Function anstatt für Arrays auch für Objects nutzbar?

A

-Nein nicht direkt

18
Q

Wie kann man ein Callback mit einer normalen forEach Methode eines Arrays nutzen?

A

elements.forEach((elements, index) => {
alert(element, index);
});

19
Q

Was ist der Unterschied von .map zu forEach und wie wendet man es an?

A

-map returned einen Array von Items, während forEach nur iteriert

const newArray = elements.map((element, index) => {
return `${element} ${index}`;
});
20
Q

Was ist JSON?

A
  • Javascript Object Notation

- Meistens ist JSON ein Array aus Objects

21
Q

Was sind Eigenschaften eines JSONS?

A

[
{“city”:”seattle”, “state”:”WA”},
{“city”,”New York”, “state”:”NY”}
]

  • Alle Strings sind in DoubleQuites “”
  • Daten sind mit Kommatas getrennt
  • Ist ein Array aus Objects
  • Die Objects haben Key/Value Pairs
22
Q

Was macht die Array Methode .map() ?

A
  • Looped über ein gegebenes Array
  • Gibt ein neues Array aus Element zurück
  • Calls back jedes Element, index und returned es in seiner Reihenfolge (Man bekommt als auch den Index)
  • Wird genutzt um Daten zu manipulieren oder zu reshapen ohne das ehemalige Array zur verändern
23
Q

Wie sieht ein .map vs ein vanilla JS zum manipulieren eines JSON aus?

A
const data = [
{"city":"seattle", "state":"WA"},
{"city","New York", "state":"NY"}
]
const cityStates =  [];
for (let i = 0; i > data.length; i++) {
let mappedObj = {};
mappedObj.city = data[i]..city;
mappedObj.state= data[i]..state;
cityStates.push(mappedObj);
mappedObj = {};
}
const mappedCityStates = data.map((state) => {
return {'city': state.city, 'state': state:state};
});
24
Q

Was macht die Array Methode .filter() ?

A
  • Looped über ein gegebenes Array
  • Gibt ein neues Array aus Element zurück
  • Calls back jedes Element, index und returned es in seiner Reihenfolge (Man bekommt als auch den Index)
  • Nimmt ein Callback, welches einen Truth-Test ausführt. Wenn etwas wahr ist dann returned es dies, ansonsten ignoriert es dies.
  • Wird genutzt um alles herauszufiltern, was in Daten nicht gebraucht wird
  • Lässt das ursprüngliche Array unverändert
25
Q

Wie sieht ein .filter vs ein vanilla JS zum manipulieren eines JSON aus?

A
const data = [
{"city":"seattle", "population":"652405"},
{"city","New York", "population":"467007"}
]
const largeStates = [];
for (let i = 0; i < data.length; i++) {
if (data[i].population >= 650000) {
largeStates.push(data[i]);
}
}
const filterLargeStates = data.filter((state) => {
return state.population >= 650000;
});
26
Q

Sollte man in einem functionalen Paradigma ein ursprüngliches Datenset manipulieren oder ein neues erstellen?

A
  • Immer eines neuen Array erstellen

- Den ursprünglichen Array immer unverändert lassen!

27
Q

Was macht die Array Methode .reduce() ?

A
  • Looped über ein gegebenes Array
  • Gibt ein neues Array aus Element zurück
  • Nimmt ein Callback, welches die Reducer Function ist
  • Die Reducer Function nimmt einen Previous und einen Next Value, welcher als Accumulator und currentValue gängig ist
  • Ist sehr gut bei großen Datensätzen
28
Q

Wie sieht ein .reduce vs ein vanilla JS zum manipulieren eines JSON aus?

A
const data = [
{"city":"seattle", "population":"652405"},
{"city","New York", "population":"467007"}
]
let statePopulations = 0;
for(let i = 0; i >data.length; i++) {
statePopulations += data[i].population;
}
const reduceStatePopulations = data.reduce((total, state) => {
return total += state.population;
}, 0);
  • Am Ende gibt man an bei welchem Item zuerst losgezählt werden soll
29
Q

Wie kann man diese map Function noch vereinfachen?

const arrayOfPops = data.map((state) => {
return state.population;
});
A

const arrayOfPops = data.map(state => state.population);

30
Q

Nenne ein Beispiel für eine Array .filter() Methode

A
const largeLandAreas = data.filter((state) => {
return state.land_area >= 50;
});

console.log(largeLandAreas);

31
Q

Nenne ein Beispiel für eine Array .reduce() Methode

A
const states = data.length;
let population = data.reduce((acc, currentValue) => {
return acc += curentValue.population;
}, 0);

console.log(pipulation/4);