Gibt es eine Reihe von Dingen, die jeder JavaScript-Programmierer wissen sollte, um sagen zu können "Ich kenne JavaScript"?
Antworten
Zu viele Anzeigen?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
yobject['prop']
sind ein und dasselbe (können Sie also bitte aufhören, miteval
danke); dass Objekteigenschaften immer Strings sind (auch bei Arrays); wasfor
...in
ist für (そして was es nicht ist ). -
Immobilienschnüffelei; was
undefined
ist (und warum es riecht ); warum die scheinbar wenig bekanntein
Operator ist vorteilhaft und unterscheidet sich vontypeof
/undefined
Kontrollen;hasOwnProperty
zum Zweck derdelete
. -
Dass die
Number
Datentyp wirklich ein Float ist; die sprachunabhängigen Schwierigkeiten bei der Verwendung von Floats; die Vermeidung desparseInt
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 vonvar
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 dienew
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 oderFunction#bind
kann verwendet werden, um dies zu umgehen. -
Weitere Merkmale der ECMAScript Fifth Edition sind
indexOf
,forEach
und die Funktionsprogrammierung Methoden zuArray
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; wiepostMessage
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).
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!
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
- See previous answers
- Weitere Antworten anzeigen