JUST A DRAFT!

Closures

Auf Deutsch: Funktionsabschluss

  • Objekt (Funktion) mit mehreren Scopes.
  • Umfasst nicht nur Funktion, sonder Kopie
    des Umfelds.

Beispiel

Wofür das alles?

  • Daten und Funktion werden zusammengebracht
  • Quasi wie die Instanz einer Klasse mit:
    • Einer Funktion
    • Einem oder mehreren Attributen

Wofür das alles?

class Foo {
  int x;

  Foo(int x) {
    this.x = x;
  }

  int add(y) {
    return x + y;
  }
}

...
  Foo add5 = new Foo(5);
  int result = add5(2); // 7
...
function makeAdder(x) {
  return function(y) {
    return x + y;
  };
}

const add5 = makeAdder(5);
let result = add5(2); // 7

...Wofür das alles?

  • Haufen Ereignisbasierter Code im Web:
  • Ereigniseintritt wird Callback gegeben -> Closure!

ES6 Modules

Was bringts?

  • Import / Export von Funktionen
  • Code schneiden (interne / externe API)
  • Code verschlanken (es muss nicht alles geladen werden)
//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

//------ main.js ------
import { square, diag } from 'lib';
console.log(square(11)); // 121
console.log(diag(4, 3)); // 5

JUST A DRAFT!

By chclaus

JUST A DRAFT!

  • 783