JSTF-Workshop Teil 1
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

JSTF-Workshop Teil 1

on

  • 660 views

Der erste Workshop-Teil unserer JavaScript Task Force bei mindmatters in Hamburg. ...

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.

Statistics

Views

Total Views
660
Views on SlideShare
625
Embed Views
35

Actions

Likes
1
Downloads
1
Comments
0

4 Embeds 35

http://www.mindmatters.de 26
http://mindmatters.de 7
http://www.slideshare.net 1
http://coderwall.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • -functions are first class objects: <br /> --> JavaScript hat mehr &#xC4;hnlichkeit zu Lisp oder Scheme als zu Java <br /> --> Stichwort Closures (Closures konservieren ihren Kontext) <br /> --> macht JavaScript zu einer sehr m&#xE4;chtigen Programmiersprache <br /> <br /> -dynamisch typisierte Sprache: <br /> -->kein Compiler <br /> --> erst zur Laufzeit werden Typ-Fehler sichtbar <br /> <br /> -m&#xE4;chtige Objekt-Literal-Syntax <br /> -->k&#xF6;nnen einfach durch Auflistung ihrer Komponenten erstellt werden, d.h. keine Definition von Klassen und Konstruktoren notwendig <br /> -->Syntax war Inspiration f&#xFC;r JSON-Format <br /> <br /> -protoytp-basierte Vererbung: <br /> --> JS ist ein klassenloses System <br /> --> m&#xE4;chtig, aber ungewohnt f&#xFC;r klassische OOler (wie Ruby oder Java)
  • -Viele der vorgestellten Beispiele werden aus Unwissenheit oder aus intuitiv gemacht, weil man es aus <br /> anderen Programmiersprachen kennt bzw. so erwartet
  • - == versucht die Operanden automatisch zu konvertieren, wenn sie unterschiedliche Typen haben
  • -es wird &#x201E;undefined&#x201C; statt ein Objekt mit der Property Status zur&#xFC;ckgegeben <br /> -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&#xF6;rt es auf zu parsen <br /> -Leider gibt es keine M&#xF6;glichkeit auf den nicht geparsten Teil zuzugreifen (z.B. tons) <br /> -Ja das letzt ist 0. So einfach k&#xF6;nnen Datums- oder Zeit-Angaben also nicht geparsed werden
  • -Der 2. Parameter gibt die Basis an <br /> -Bei &#x201E;08&#x201C; ohne Radix-Parameter wird als Zahlenbasis 8 verwendet
  • Folge der Kompatibilit&#xE4;t zum IEEE Standard for Binary Floating Point Arithmetic
  • -ja richtig, 3 <br /> -Hab beide Varianten selbst im FF-Browser ausprobiert.
  • + ,0&#x2018; wird autokonvertiert <br /> ,+&#x2018; ist hier der Vorzeichenoperator <br /> + ,oops&#x2018; kann nicht autokonvertiert werden
  • isFinite noch besser zum Testen ob etwas eine Zahl ist, da zus&#xE4;tzlich auf Infinity gepr&#xFC;ft wird
  • -Ruby hat wie JavaScript keinen Compiler. <br /> -Trotzdem treten in unseren Ruby-Programmen eigentlich solche Fehler wie ein Semikolon (bei uns ein END) zu vergessen nie auf. <br /> -Dies ist der hohen Test-Abdeckung von unserem Ruby-Code zu verdanken.

JSTF-Workshop Teil 1 Presentation Transcript

  • 1. JSTF-Workshop Teil 1
  • 2. Heute
  • 3. Web2.0
  • 4. Browser-Abstraktion
  • 5. JavaScript wird cool
  • 6. “World‘s most popular Programming Language” Douglas Crockford
  • 7. Eigentlich alles feini-fein…
  • 8. “World‘s most misunderstood Programming Language” Douglas Crockford
  • 9. “Lisp in C‘s clothing” Douglas Crockford
  • 10. Schlechte Vergangenheit
  • 11. Gestern
  • 12. JS ist gefährlich!
  • 13. DHTML
  • 14. XMLHttpRequest
  • 15. Alert Debugging
  • 16. Dilettantentum
  • 17. Fehlende Literatur
  • 18. Geheimwissen
  • 19. Eigentlich Geschichte…
  • 20. Professionalität
  • 21. Fachliteratur
  • 22. Wissensaustausch
  • 23. Kryptographie
  • 24. Weg von der Bastellösung
  • 25. Bausatz für Zeitmaschine?
  • 26. Zukunft
  • 27. Google Wave
  • 28. Editor für die Cloud
  • 29. JSTF Good Parts / Professional Grade JS Werkzeuge Strategien Blick für's Ganze Flexiblere Teams
  • 30. Workshop Beispiele aus dem Programmieralltag Diskussion Refactoring
  • 31. JavaScript ‣ functions are first class objects ‣ dynamisch typisierte Sprache ‣ mächtige Objekt-Literal-Syntax ‣ Prototyp-basierte Vererbung
  • 32. Mini-Javascript- ‣ in vielen Anwendungen zu sehen ‣ JavaScript erlaubt vieles, verzeiht wenig
  • 33. Was passiert hier? 0 == '0' => ? '' == '0' => ? 0 == '' => ?
  • 34. Das hier 0 == '0' => true '' == '0' => false 0 == '' => true
  • 35. So geht‘s richtig 0 === '0' => false '' === '0' => false 0 === '' => false
  • 36. Best practice für Vergleich Verwende standardmäßig immer === statt == bzw. !== statt !=
  • 37. Was passiert hier? return { status: true };
  • 38. Das Semikolon ;-) ‣ Automatisches Einfügen ‣ Keine Warnung ‣ Also immer dran denken ein ;-) einzufügen
  • 39. Was passiert hier? parseInt("16"); parseInt("16 tons"); parseInt("08");
  • 40. Na wusstet ihr das? parseInt("16"); => 16 parseInt("16 tons"); => 16 parseInt("08"); => 0 Hääääääh?!
  • 41. parseInt und der parseInt("08") => parseInt("08", 10)
  • 42. Na, brauchst du einen Taschenrechner? 0.1 + 0.2 === ?
  • 43. Bei Geld ist nicht zu spaßen 0.1 + 0.2 === 0.30000000000000004
  • 44. So ist richtig ((0.1 * 10) + (0.2 * 10)) / 10 = 0.3
  • 45. Zahlen für Fortgeschrittene: NaN ‣ Not a Number ‣ +'0' ist eine Zahl ‣ +'oops' ist NaN
  • 46. Test auf NaN typeof NaN === 'number' => ? NaN === NaN => ? NaN !== NaN => ?
  • 47. Test auf NaN typeof NaN === 'number' => true NaN === NaN => false NaN !== NaN => true
  • 48. Test auf NaN richtig isNaN(NaN) => true isNaN(0) => false isNaN('oops') => true isNaN('0') => false isFinite() noch besser
  • 49. Menschen machen ‣ Jeder kann mal ein Semikolon vergessen ‣ Keine JavaScript-Tests (zumindest in unseren Projekten) ‣ JSLint for the rescue