Archiv für den Monat: Oktober 2015

JavaScript

Am Ball bleiben heute, heißt sicher auch ein zumindest grundlegendes aber dabei gründliches Verständnis und Handwerk von JavaScript aufzubauen. Dafür habe ich mittelerweile so manche Nachtschicht eingelegt und mir ein paar nützliche Links und Beiträge gesammelt.

Normalerweise nehme ich mir die Spec der Programmiersprache und arbeite sie durch, flankiert von der Analyse eines entsprechend in dieser Sprache geschriebenen Projekts (möglichst ein nicht triviales). Dann bekommt man ein Gefühl dafür, wie die Sprachmittel an einer Problemstellung lebendig eingesetzt werden, was die Pattern sind und wie man Spezialitäten einsetzt.

Das ist für meine aktuellen Nachtschichten ein Vorgehen, was nicht funktioniert. So war ich auf der Suche nach einer Methode z. B. über Video-Beiträge Wissen aufzubauen. Passende Beiträge zu finden ist ein nicht einfaches Unterfangen. JS-Tutorials erschlagen einen alleine von der Anzahl her und sie müssen auch speziell zu den Lernvorlieben und dem aktuellen Wissenstand passen. So sind passt meine kleine Auswahl sicher nicht für jeden, könnte aber ein Einstieg sein.

A re-introduction to JavaScript (JS tutorial) was der Name schon sagt. Stück für Stück kann man in die Tiefe steigen und alt bekanntes neu beleuchten.

Für die meisten ein alter Hut die Talks von Mr. Crockford. Ich habe trotz dessen seine Talks mit großem Gewinn gehört:

Wie schon in einem anderen Post geschrieben, finde ich folgenden Talk für mich zum Lernen der Basis von JavaScript bisher am Besten. Habe mir auch den gesamten Kurs auf Udemity zugelegt. (Geht man über den Youtube-Link, so erhält man Rabatt, wie auch immer.)

Der Kurs ist sicher langatmig und voller Wiederholungen. Aber Tony Alicea baut das Verständnis von JavaScript und wie es funktioniert ganz elementar auf. Er betont die wichtigen Schritte und erläutert eines um das andere Mal die grundlegenden Zusammenhänge.

Genau das Richtige für das Lernen nachts nach einem arbeitsreichen Tag, wo ständige Wiederholungen die wegdriftende Aufmerksamkeit einfangen 🙂

Type coercion

Von allen Eigenheiten von JS ist mir allerdings coercion die, die sich für mich mit dem meisten Fehlerpotential verbindet. Diese implizite Typumwandlung tätigt JS automatisch für einen selbst nach dem „best guess“. D. h. es wird der Typ und Wert so umgewandelt, wie es in den meisten Fällen als passend angesehen wird.

An solchen Stellen wird mir bewusst, dass man ein ganz klares Verständnis von JavaScript besitzen muss, um zu verstehen, was an solchen Stellen passiert.

name = name || '<default value>'

Der Oder-Operator gibt hier den ersten zu ‚true‘ konvertierbaren Operanden zurück. ‚undefined‘ führt die Coercion auf ‚false‘, damit wird name= '<default value>' ausgeführt. Ist name aber ein definierter Wert, so wird name gleich diesen Werts gesetzt, es sei denn, dieser Wert ist die Null. Dann schlägt unsere kleine Konstruktion hier fehl.

Kennt man solche Pitfalls, programmiert einfach von vornherein anders. Mit coercion hängt auch ein oft genannter Kandidat für Fehler zusammen ‚==‘ vs. ‚===‘. Siehe hierzu z. B.:

Ob solche Effekte und Sprachmittel nun wünschenswert sind oder nicht, ob sie meinen Vorstellungen von einer guten Programmiersprache entsprechen ist ganz unerheblich. Fakt ist: Um Code fixen zu können oder wartbaren Code zu schreiben, muss ich verstehen, wie der Code (in diesem Falle JavaScript), die ausführende Engine und der Gesamt-Kontext wie z. B. ein Browser oder Node.js funktionieren.