25. JSPM - SystemJS Package
Manager
Paketmanager auf Basis von SystemJS.
Bibliotheken können installiert und direkt verwendet werden.
$ jspm install jquery
import $ from ‘jquery’;
37. Scoping
Global: Variablen sind überall verfügbar.
Function: Variablen sind in der aktuellen Funktion und allen
Subroutinen verfügbar.
Closure: Erstellender Kontext einer Funktion und die Funktion
selbst
38. let
Variable ist nur im aktuellen Block gültig.
Variablen werden innerhalb des Block gehoistet.
for (let task in tasks) {
console.log(task);
}
42. Destructuring
var person = {name: 'Klaus', age: 42};
var {name, age} = person;
var arr = [1, 2, 3];
var [one, two, three] = arr;
var person = {name: 'Klaus', age: 42};
var {name: firstname, age} = person;
46. Mit ECMAScript 6
function testDefaults(value = 'default') {
console.log(value);
}
testDefaults(); // default
testDefaults('myValue'); // myValue
Mit ECMAScript 6 kann man den Parametern Standardwerte
zuweisen, die verwendet werden, falls kein Wert beim Aufruf
übergeben wird.
47. Default Parameters
Default Parameters können an jeder Stelle der Parameterliste
verwendet werden.
function testDefaults(a = 'foo', b, c = 'bar') {
console.log(arguments);
}
testDefaults(); // foo undefined bar
48. Default Parameters
Wird undefined explizit übergeben, wird trotzdem der default-
Wert benutzt.
function testDefaults(a, b = 1) {
return a + b;
}
var b;
testDefaults(2, b); // 3
49. Default Parameters
Es können beliebige Werte verwendet werden: Primäre
Datentypen, Objekte, Arrays und Funktionsaufrufe.
function testDefaults(
pri = 'hello',
obj = {name: 'world'},
arr = [1,2,3],
funcVal = myFunc())
{
console.log(pri, obj, arr, funcVal);
}
50. Default Parameters
Kein Zugriff über arguments auf Default Parameters.
arguments.length wird nicht angepasst, wenn ein Default
Parameter zum Einsatz kommt.
function testDefaults(a = 1) {
console.log(arguments.length);
console.log(arguments[0]);
}
testDefaults(); // 0 undefined
51. Default Parameters
Die Default Parameter werden zur Laufzeit ausgewertet. Es
wird also bei jedem Funktionsaufruf ein neues Objekt erzeugt.
function testDefaults(arr = []) {
console.log(arr);
return arr;
}
var myArr1 = testDefaults();
var myArr2 = testDefaults();
52. Default Parameters
Zugriff von späteren Argumenten auf frühere.
function testDefaults(
arr = [1,2,3],
length = arr.length)
{
console.log(arr);
console.log(length);
}
65. var gFunction = function*() {
var i
i = yield 'first';
i = yield 'second' + i;
yield 'third' + i;
}
var g = gFunction();
console.log(g.next());
console.log(g.next(1));
console.log(g.next(2));
Generator Input
66. Generators und for…of
var gFunction = function*() {
yield 'Hello';
yield 'World';
}
var generator = gFunction();
for (let i of generator) {
console.log(i);
}
68. Promises
Versprechen auf die Erledigung einer asynchronen
Aufgabe.
Events?
Gut für Fire and Forget, nicht aber, wenn es um Erfolg/
Misserfolg geht.
69. Promises
• Fulfill: Aktion war erfolgreich.
• Reject: Aktion war nicht erfolgreich.
• Pending: Noch kein fulfill oder reject
• Settled: fulfilled oder rejected
70. Promises
var promise = new Promise(function(resolve, reject) {
if (true) {
resolve("Everything is fine");
}
else {
reject("Something went wrong");
}
});
promise.then(function success(data) {
console.log(data);
}, function failure(err) {
console.log(err);
});
71. Promises
Chaining
function async() {
return new Promise(function (res, rej) {
res(1);
});
}
async().then(function (v) {
return v + 1;
}).then(function (v) {
return v + 1;
}).then(function (v) {
console.log(`value: ${v + 1}`);
});
78. Rest
arguments ist böse!
arguments ist kein richtiges Array-Objekt
Rest Parameter steht für eine beliebige Anzahl von
Argumenten.
Argumentenliste wird in ein Array umgewandelt.
81. Spread
Der Spread Operator kann überall eingesetzt werden, wo ein
Array in eine Argumentenliste umgewandelt werden soll.
Verhält sich also ähnlich wie apply.