Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Per Anhalter durch JavaScript

Per Anhalter durch JavaScript

Viele Entwickler, die im Web arbeiten, programmieren auch JavaScript. Betonung auf “auch”: Ihre Hauptsprache und/oder Lieblingssprache ist wahrscheinlich eine andere. Gern wird JavaScript in “Geschmacksrichtung Java/Ruby…” geschrieben. Aber JS ist anders. Packt euer Handtuch ein: Wir nehmen euch mit auf eine Reise ins JavaScript-Universum, um euch diese seltsame und tolle Sprache und seine Besonderheiten näherzubringen und euch zu helfen, JavaScript zu schreiben, wie es geschrieben werden möchte.

Lucas Dohmen

October 29, 2020
Tweet

More Decks by Lucas Dohmen

Other Decks in Programming

Transcript

  1. 4 “The ECMAScript runtime system performs automatic type conversion as

    needed.” ECMAScript 2018 Language Specification, 7.1 Type Conversion
  2. Es sieht so aus als würdest du einen String brauchen.

    Ich hab ihn für dich konvertiert. Klarer Fall, du willst eine Zahl*! * 'hello' als Zahl ist NaN '' als Zahl ist 0
  3. 7 Die Wahrheit ist irgendwo da draußen Alles wird zu

    true umgewandelt außer false, null, undefined, 0, NaN, ""
  4. 9 JavaScript versucht für dich Dinge in den richtigen Typen

    zu verwandeln. Dabei stellt es sich nicht immer klug an.
  5. 10 Folglich •Immer === statt == benutzen – hier passiert

    keine Typkonvertierung •Bei Gleichheit zudem beachten: Primitive Werte werden anhand ihres Wertes verglichen, Objekte anhand ihrer Identiät •Was ist ein Objekt? Dazu nun mehr.
  6. 14 Objekte •Ein Objekt ist ein Dictionary •Die Schlüssel sind

    immer Strings •Die Werte können beliebige Typen haben •Ist der Schlüssel kein String, wird toString() darauf aufgerufen: •lisa.toString() === '[object Object]' •lucas.toString() === '[object Object]' •lisa.toString() === lucas.toString()
  7. 17 Fast alles ist ein Objekt •Primitive Values: Undefined, Null,

    Boolean, Number, String, Symbol •Alles andere sind Objekte, zB.: •Arrays •Reguläre Ausdrücke •Promises •Funktionen •...
  8. You can think of a prototype as a “hidden” property

    on every object that determines “where to look next”. So if there’s no taste property on iceCream, JavaScript will look for a taste property on its prototype, then on that object’s prototype, and so on, and will only give us undefined if it reaches the end of this “prototype chain” without finding .taste Dan Abramov 21
  9. 26 Objekte sind Dictionaries die Strings auf beliebige Objekte abbilden

    und alle nicht definierten Schlüssel an die Prototypenkette weitergeben. Wird nichts gefunden, wird undefined zurückgegeben.
  10. „Seht mich an. Ein Hirn von der Größe eines Planeten,…

    und man schickt mich, um euch in die Kommandozentrale zu bringen. Nennt man das vielleicht berufliche Erfüllung? Also ich nicht.“ 27
  11. 33 Definition Mit Hoisting (engl., Hochziehen) bezeichnet man das Verhalten

    des JavaScript-Interpreters bei der Deklaration von Variablen und Funktionen. Wikipedia 21.01.20, https://de.wikipedia.org/wiki/Hoisting
  12. let -> kein Hoisting, Text 37 In ECMAScript 2015, werden

    Deklarationen mit let nicht an den Anfang des Blocks verschoben (hoist). MDN 22.01.20, https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/let
  13. Krischerstr. 100 40789 Monheim am Rhein Germany +49 2173 3366-0

    Ohlauer Str. 43 10999 Berlin Germany +49 2173 3366-0 Ludwigstr. 180E 63067 Offenbach Germany +49 2173 3366-0 Kreuzstr. 16 80331 München Germany +49 2173 3366-0 Hermannstrasse 13 20095 Hamburg Germany +49 2173 3366-0 Gewerbestr. 11 CH-6330 Cham Switzerland +41 41 743 0116 innoQ Deutschland GmbH innoQ Schweiz GmbH www.innoq.com 50 Danke! Fragen? Lucas Dohmen [email protected] +49 151 75062496 moonbeamlabs Lisa Maria Moritz [email protected] +49 176 646 300 28 teapot4181