Esto está relacionado de alguna manera con this question, pero no estoy pidiendo recursos sobre las mejores prácticas en JavaScript, sino su consejo real.Prácticas recomendadas de JavaScript
Comenzaré con mi propia lista. Puede publicar una respuesta o editar directamente la pregunta si está seguro de que el consejo no es controvertido.
Aquí vamos:
- Utilice siempre
var
- mayúscula los nombres de las funciones constructoras - y nada más
- uso
===
para la comparación - utilizar conversiones explícitas para primitivas, por ejemplo
Number()
,String()
,Boolean()
- de verificación para los tipos primitivos con
typeof
- de verificación para los tipos de objetos con
instanceof
cheque por incorporado en tipos de objetos con
Object.prototype.toString()
para evitar problemas de bastidor transversal, por ejemploObject.prototype.toString.call(obj) === '[object Array]'
cheque
this
en los constructores, por ejemplofunction MyObject() { if(!(this instanceof arguments.callee)) throw new Error('constructor called with invalid `this`'); // [...] }
uso funciones anónimas para namespacing a no contamina el alcance global, por ejemplo,
(function() { var noGlobalVar = 'foo'; // [...] })();
cheque
hasOwnProperty()
enfor..in
bucles - no compromete la que nadie ensuciado con los prototipos- no utilizan
for..in
bucles para iterar sobre elementos de arrays u objetos de matriz similar a
mi pensamiento era hacer moldes explícitos, por ejemplo, no hacer cosas como 'a = 3 + document.forms [0] .elemens [0] .value', pero' a = 3 + Number (document.forms [ 0] .elemens [0] .value) '; Observe que estoy ** no ** aconsejando usar objetos contenedoras ('new Number()', 'new String()', ...) – Christoph
no necesita hacer eso a menos que espere que el valor contenga una cadena como 'foo'. que fallará de cualquier manera. – scunliffe
@scunliffe: '3 + 'foo' === '3foo'', mientras que '3 + Number ('foo') === NaN' – Christoph