Dies ist etwas verwandt mit this question, aber ich frage nicht nach Ressourcen über Best Practices in JavaScript, sondern Ihre eigentliche Beratung.JavaScript Best Practices
Ich fange mit meiner eigenen Liste an. Sie können entweder eine Antwort posten oder die Frage direkt bearbeiten, wenn Sie sicher sind, dass der Rat nicht umstritten ist.
Hier gehen wir:
- immer verwenden
var
- Namen Konstruktorfunktionen Kapital - und sonst nichts
- Verwendung
===
zum Vergleich - Verwendung explizite Casts für Primitive, z.B.
Number()
,String()
,Boolean()
- Check für primitive Typen mit
typeof
- Prüfung für Objekttypen mit
instanceof
Check für mit
Object.prototype.toString()
eingebauten Objekttypen Cross-Frame-Probleme zu vermeiden, z.B.Object.prototype.toString.call(obj) === '[object Array]'
Scheck
this
in Konstruktoren, z.B.function MyObject() { if(!(this instanceof arguments.callee)) throw new Error('constructor called with invalid `this`'); // [...] }
Verwendung anonyme Funktionen für Namensräume nicht den globalen Bereich verschmutzen, z.B.
(function() { var noGlobalVar = 'foo'; // [...] })();
Scheck
hasOwnProperty()
infor..in
Schlaufen - nicht davon ausgehen, dass niemand mit den Prototypen verwirrten- nicht verwenden
for..in
Schleifen über Elemente des Arrays oder Arrays ähnliche Objekte
mein Denken war es, Umwandlungen explizit zu machen, zB mache ich keine Dinge wie 'a = 3 + document.forms [0] .elemens [0] .value', aber' a = 3 + Number (document.forms [ 0] .elemens [0] .value) '; Beachten Sie, dass ich ** ** nicht rate, Wrapper-Objekte zu verwenden ('new Number()', 'new String()', ...) – Christoph
Sie müssen das nicht tun, bis Sie erwarten, dass der Wert enthalten ist eine Zeichenfolge wie 'foo'. was in beiden Fällen scheitern wird. – scunliffe
@scunliffe: '3 + 'foo' === '3foo'', während '3 + Zahl ('foo') === NaN' – Christoph