Questo è in qualche modo correlato a this question, ma non sto chiedendo risorse sulle best practice in JavaScript, ma i tuoi consigli effettivi.Procedure consigliate JavaScript
Inizierò con la mia lista personale. Puoi inviare una risposta o modificare direttamente la domanda se sei sicuro che il consiglio non sia controverso.
Qui andiamo:
- utilizzare sempre
var
- capitalizzare nomi delle funzioni costruttore - e nient'altro
- uso
===
per il confronto - uso cast espliciti per le primitive, per esempio
Number()
,String()
,Boolean()
- controllo per i tipi primitivi con
typeof
- controllo per tipi di oggetti con
instanceof
controllo per incasso tipi di oggetti con
Object.prototype.toString()
per evitare problemi tra frame, ad esempioObject.prototype.toString.call(obj) === '[object Array]'
controllo
this
nei costruttori, per esempiofunction MyObject() { if(!(this instanceof arguments.callee)) throw new Error('constructor called with invalid `this`'); // [...] }
uso funzioni anonime per namespacing di non inquinare l'ambito globale, ad esempio
(function() { var noGlobalVar = 'foo'; // [...] })();
controllo
hasOwnProperty()
infor..in
loop - non impegna che nessuno pasticciato con i prototipi- non utilizzare
for..in
loop per scorrere gli elementi di matrici o oggetti array come
il mio pensiero era di rendere espliciti i cast, ad esempio non fare cose come 'a = 3 + document.forms [0] .elemens [0] .value', ma' a = 3 + numero (document.forms [ 0] .elemens [0] .value) '; notiamo che non sto ** consigliando di usare gli oggetti wrapper ('new Number()', 'new String()', ...) – Christoph
non è necessario farlo se non si prevede che il valore contenga una stringa come 'foo'. che fallirà in entrambi i modi. – scunliffe
@scunliffe: '3 + 'foo' === '3foo'', considerando '3 + Number ('foo') === NaN' – Christoph