Der erste Workshop-Teil unserer JavaScript Task Force bei mindmatters in Hamburg.
Es wird zunächst ein etwas weiter gefasster Ausblick geworfen auf die aktuelle Bedeutung von JavaScript in der Webentwicklung.
Die zweite Hälfte der Präsentation steigt in den technischen Aspekt des Workshops ein, indem sie typische Stolpersteine in JavaScript sowie das Code-Quality-Tool JSLint vorstellt.
50. Test auf NaN
typeof NaN === 'number' => true
NaN === NaN => false
NaN !== NaN => true
51. Test auf NaN richtig
isNaN(NaN) => true
isNaN(0) => false
isNaN('oops') => true
isNaN('0') => false
isFinite() noch besser
52. Menschen machen
‣ Jeder kann mal ein Semikolon vergessen
‣ Keine JavaScript-Tests (zumindest in
unseren Projekten)
‣ JSLint for the rescue
Notes de l'éditeur
-functions are first class objects:
--> JavaScript hat mehr Ähnlichkeit zu Lisp oder Scheme als zu Java
--> Stichwort Closures (Closures konservieren ihren Kontext)
--> macht JavaScript zu einer sehr mächtigen Programmiersprache
-dynamisch typisierte Sprache:
-->kein Compiler
--> erst zur Laufzeit werden Typ-Fehler sichtbar
-mächtige Objekt-Literal-Syntax
-->können einfach durch Auflistung ihrer Komponenten erstellt werden, d.h. keine Definition von Klassen und Konstruktoren notwendig
-->Syntax war Inspiration für JSON-Format
-protoytp-basierte Vererbung:
--> JS ist ein klassenloses System
--> mächtig, aber ungewohnt für klassische OOler (wie Ruby oder Java)
-Viele der vorgestellten Beispiele werden aus Unwissenheit oder aus intuitiv gemacht, weil man es aus
anderen Programmiersprachen kennt bzw. so erwartet
- == versucht die Operanden automatisch zu konvertieren, wenn sie unterschiedliche Typen haben
-es wird „undefined“ statt ein Objekt mit der Property Status zurückgegeben
-undefined ist nicht null
-JavaScript versucht fehlerhafte Programme automatisch zu fixen
parseInt konvertiert einen String in einen Integer
-Sobald parseInt auf ein Nicht-Zahl Zeichen trifft hört es auf zu parsen
-Leider gibt es keine Möglichkeit auf den nicht geparsten Teil zuzugreifen (z.B. tons)
-Ja das letzt ist 0. So einfach können Datums- oder Zeit-Angaben also nicht geparsed werden
-Der 2. Parameter gibt die Basis an
-Bei „08“ ohne Radix-Parameter wird als Zahlenbasis 8 verwendet
Folge der Kompatibilität zum IEEE Standard for Binary Floating Point Arithmetic
-ja richtig, 3
-Hab beide Varianten selbst im FF-Browser ausprobiert.
+ ,0‘ wird autokonvertiert
,+‘ ist hier der Vorzeichenoperator
+ ,oops‘ kann nicht autokonvertiert werden
isFinite noch besser zum Testen ob etwas eine Zahl ist, da zusätzlich auf Infinity geprüft wird
-Ruby hat wie JavaScript keinen Compiler.
-Trotzdem treten in unseren Ruby-Programmen eigentlich solche Fehler wie ein Semikolon (bei uns ein END) zu vergessen nie auf.
-Dies ist der hohen Test-Abdeckung von unserem Ruby-Code zu verdanken.