368 Stimmen

Was sollte jeder JavaScript-Programmierer wissen?

Gibt es eine Reihe von Dingen, die jeder JavaScript-Programmierer wissen sollte, um sagen zu können "Ich kenne JavaScript"?

590voto

bobince Punkte 512550

Nicht jQuery. Nicht YUI. Nicht (usw. usw.)

Frameworks mögen zwar nützlich sein, aber sie verbergen oft die manchmal hässlichen Details, wie JavaScript und das DOM tatsächlich funktionieren, vor Ihnen. Wenn Ihr Ziel darin besteht, sagen zu können "Ich kenne JavaScript", dann ist die Investition von viel Zeit in ein Framework dem entgegengesetzt.

Hier finden Sie einige Funktionen von JavaScript, die Sie kennen sollten, um zu verstehen, was die Sprache tut und um nicht überrumpelt zu werden, die aber für viele Menschen nicht sofort offensichtlich sind:

  • Das object.prop y object['prop'] sind ein und dasselbe (können Sie also bitte aufhören, mit eval danke); dass Objekteigenschaften immer Strings sind (auch bei Arrays); was for ... in ist für (そして was es nicht ist ).

  • Immobilienschnüffelei; was undefined ist (und warum es riecht ); warum die scheinbar wenig bekannte in Operator ist vorteilhaft und unterscheidet sich von typeof / undefined Kontrollen; hasOwnProperty zum Zweck der delete .

  • Dass die Number Datentyp wirklich ein Float ist; die sprachunabhängigen Schwierigkeiten bei der Verwendung von Floats; die Vermeidung des parseInt Oktalfalle.

  • Verschachtelte Funktionen; die Notwendigkeit der Verwendung von var im Geltungsbereich, um versehentliche Globals zu vermeiden; wie Geltungsbereiche für Abschlüsse verwendet werden können; die Problem der geschlossenen Schleife .

  • Wie globale Variablen und window Eigenschaften kollidieren; wie globale Variablen und Dokumentelemente nicht kollidieren sollten, es aber im IE tun; die Notwendigkeit der Verwendung von var auch im globalen Bereich, um dies zu vermeiden.

  • Wie die function Anweisung wirkt auf ' Hebezeug ' eine Definition vor vorangehendem Code; der Unterschied zwischen Funktionsanweisungen und Funktionsausdrücken; warum benannte Funktionsausdrücke sollte nicht verwendet werden .

  • Wie Konstruktorfunktionen, die prototype Eigenschaft und die new Operator wirklich funktionieren; Methoden dies auszunutzen, um das normale Klassen-, Unterklassen- und Instanzensystem zu erstellen, das Sie eigentlich wollten; wenn Sie vielleicht schließungsbasierte Objekte anstelle von Prototypen verwenden möchten. (Die meisten JS Tutorial Material ist absolut schrecklich auf diese; es dauerte Jahre, um es gerade in meinem Kopf zu bekommen).

  • Wie this wird zum Zeitpunkt des Aufrufs bestimmt, nicht gebunden; wie folglich das Methoden-Passing nicht so funktioniert, wie Sie es erwarten aus anderen Sprachen; wie Verschlüsse oder Function#bind kann verwendet werden, um dies zu umgehen.

  • Weitere Merkmale der ECMAScript Fifth Edition sind indexOf , forEach und die Funktionsprogrammierung Methoden zu Array wie man ältere Browser repariert, um sicherzustellen, dass man sie benutzen kann; wie man sie mit anonymen Inline-Funktionsausdrücken benutzt, um kompakten, lesbaren Code zu erhalten.

  • Der Kontrollfluss zwischen dem Browser und dem Benutzercode; synchrone und asynchrone Ausführung; Ereignisse, die innerhalb des Kontrollflusses ausgelöst werden (z. B. Fokus) im Vergleich zu Ereignissen und Timeouts, die auftreten, wenn die Kontrolle zurückkehrt; wie der Aufruf eines vermeintlich synchronen Buildins wie alert kann zu einer potenziell katastrophalen Wiederverknüpfung führen.

  • Wie sich fensterübergreifendes Scripting auswirkt instanceof wie die fensterübergreifende Skripterstellung den Kontrollfluss zwischen verschiedenen Dokumenten beeinflusst; wie postMessage wird dies hoffentlich beheben.

Siehe diese Antwort zu den letzten beiden Punkten.

Vor allem sollten Sie JavaScript kritisch betrachten, anerkennen, dass es aus historischen Gründen eine unvollkommene Sprache ist (mehr noch als die meisten anderen Sprachen), und seine schlimmsten Fehlerquellen vermeiden. Crockfords Arbeit an dieser Front ist auf jeden Fall lesenswert (auch wenn ich nicht 100%ig mit ihm übereinstimme, was die "guten Teile" sind).

247voto

graphicdivine Punkte 10919

Dass sie deaktiviert werden kann.

75voto

bron Punkte 528

Das Verständnis der in Crockfords Javascript: Die guten Seiten ist eine ziemlich gute Annahme, dass eine Person ein anständiger JS-Programmierer ist.

Man kann ziemlich genau wissen, wie man eine gute Bibliothek wie JQuery benutzt und trotzdem die versteckten Teile von Javascript nicht kennen.

Ein weiterer Hinweis betrifft Debugging-Tools für verschiedene Browser. Ein JS-Programmierer sollte wissen, wie er seinen Code in verschiedenen Browsern debuggen kann.

Oh, und wie ich JSLint kenne, wird er deine Gefühle verletzen!

49voto

Skilldrick Punkte 66961

Wenn Sie ein echter JavaScript-Ninja sein wollen, sollten Sie die Antworten auf jede Frage im Perfektion tötet JavaScript Quiz .

Ein Beispiel, um Ihren Appetit anzuregen:

(function f(f){ 
  return typeof f(); 
})(function(){ return 1; });

Was ergibt dieser Ausdruck?

  • "Nummer"
  • "undefiniert"
  • "Funktion"
  • Fehler

46voto

edwin Punkte 2520

Sie kennen JavaScript nicht, wenn Sie es nicht kennen:

  1. Schließungen
  2. Prototypbasierte Vererbung
  3. Das Modulmuster
  4. Das W3C-DOM
  5. Wie Veranstaltungen funktionieren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X