Jest to w pewnym sensie związane z this question, ale nie pytam o zasoby dotyczące najlepszych praktyk w JavaScript, ale rzeczywiste porady.JavaScript Best Practices
Zacznę od mojej własnej listy. Możesz napisać odpowiedź lub bezpośrednio edytować pytanie, jeśli masz pewność, że nie jest ono kontrowersyjne.
Zaczynamy:
- zawsze używać
var
- wykorzystać nazwy funkcji konstruktora - i nic innego
- użytku
===
dla porównania - używania jawnego odlewane dla prymitywów, np
Number()
,String()
,Boolean()
- wyboru dla typów pierwotnych z
typeof
- kontroli dla typów obiektów z
instanceof
kontroli do wbudowania z
Object.prototype.toString()
typów obiektów, aby uniknąć problemów między ramkami, npObject.prototype.toString.call(obj) === '[object Array]'
sprawdzenie
this
w konstruktorów npfunction MyObject() { if(!(this instanceof arguments.callee)) throw new Error('constructor called with invalid `this`'); // [...] }
używać funkcji anonimowych do wyświetlania nazw, aby nie zanieczyszczać zasięgu globalnego, np.
(function() { var noGlobalVar = 'foo'; // [...] })();
check
hasOwnProperty()
wfor..in
pętlach - nie należy zakładać, że nikt nie grzebał prototypów- nie używać
for..in
pętle iteracyjne nad elementami tablic lub tablicy przedmiotów podobnych
moje myślenie polegało na wyraźnym rzucaniu rzutów, np. Nie rób rzeczy takich jak 'a = 3 + document.forms [0] .elemens [0] .value', ale' a = 3 + Number (document.forms [ 0] .elemens [0] .value) '; zauważ, że nie ** nie ** radzę używać obiektów opakowujących ('new Number()', 'new String()', ...) – Christoph
nie musisz tego robić, chyba że spodziewasz się, że wartość będzie zawierała ciąg taki jak "foo". które i tak zawiodą. – scunliffe
@scunliffe: '3 + 'foo' === '3foo'', natomiast '3 + Number ('foo') === NaN' – Christoph