Hoy encontré una pregunta sobre GitHub sobre cómo usar correctamente JavaScript para el desarrollo de nuestro programa. Se me ocurrió descaradamente un original ... es una estafa. Compartamos contigo.
Un enfoque principalmente razonable para JavaScript.
Tipos // tipo
Objetos // objetos
Matrices // matrices
Cuerdas // cuerdas
Funciones // funciones
Propiedades // Propiedades
Variables // variables
Azulamiento // Mejora variable
Expresiones y igualdad condicionales // expresiones condicionales e igualdades.
Bloques // código de bloqueo
Comentarios // Comentarios
Whitespace // espacio
Comas // comas
Semicolons // Semicolons
Tipo de fundición y coerción // Conversión de tipo
Convenciones de nombres // Reglas de nombres
Accesorios // Acceso
Constructores // constructores
Eventos // tiempo
Módulos // modelos
jQuery //
Compatibilidad de ECMAScript 5 // compatibilidad ECMA 5
Prueba // prueba
Rendimiento // rendimiento
Recursos // Recursos
En la naturaleza
Traducción
La guía de guía de estilo JavaScript
Colaboradores
Licencia
Tipos (tipo)
Tipo primitivo: al acceder a un tipo primitivo, en realidad accede directamente al contenido del tipo primitivo.
cadena
número
booleano
nulo
indefinido
var foo = 1,
bar = foo;
barra = 9;
console.log (foo, bar); // => 1,9
Tipo complejo: cuando accede a un tipo de datos de tipo complejo, realmente accede al valor de la variable a través de una referencia.
objeto
formación
función
var foo = [1,2]; bar = foo; bar [0] = 9; console.log (foo [0], bar [0]); // => 9,9
objeto (objeto)
Use literales de objetos para crear objetos (literal)
// badvar item = new Object (); // GoodVar item = {};No use palabras clave reservadas como nombre de propiedad del objeto. Esto no funcionará bajo IE8.
// badvar superman = {default: {Clark: 'Kent'}, privado: true}; // goodvar superman = {defaults: {Clark: 'Kent'}, Hidden: true};matriz (matriz)
También use el método literal para crear una matriz
// elementos badvar = new Array (); // Goodvar elementos = [];
Si no conoce la longitud de la matriz, use el método incorporado de Array Push para la operación de inserción
var somStack = []; // badsomestack [somestack.length] = 'vein'; // getsomestack.push ('Vein');Cuando desee copiar una matriz, use Array.slice
var len = items.length, // se refiere al contenido anterior ... itemCopy = [], i; // badfor (i = 0; i <len; ++ i) {itemCopy [i] = elementos [i];} // goodItemCopy = items.slice (); // Necesito prestar atención aquí. Realmente no sé esto ...Cadena de cuerdas
Use citas individuales para encerrar cadenas ... // No he encontrado una explicación adecuada para el rendimiento aquí, personalmente me gusta usarlo así, (es mejor usar menos que usar ... ya sabes ...)
// badvar name = "bob parr"; // goodvar name = 'bob parr'; // badvar fullName = "bob" + this.lastName; // goodvar fullName = 'bob' + this.lastName;
Cuando las cadenas tienen más de 80 caracteres, debe usar la concatenación de cadenas para escribir en varias líneas. Tenga en cuenta que si el uso excesivo, la concatenación de cadenas afectará el rendimiento.
// badvar errorMessage = 'Este es un error súper largo que se lanzó debido a Batman. Cuando te detienes a pensar en cómo Batman tuvo algo que ver con esto, no llegarías a ninguna parte rápido. Cuando te detienes a pensar en cómo Batman tenía algo que hacer /con esto, no llegarías a ninguna parte /fast.';// Goodvar errorMessage = 'Este es un error súper largo que se lanzó porque' +'de Batman. Cuando te detienes a pensar en cómo Batman tenía algo que hacer ' +' con esto, no llegarías a ninguna parte rápido ';
Si crea una matriz de manera planificada, como la siguiente. Usar Array.Join funcionará mejor.
Los elementos var, mensajes, longitud, i; mensajes = [{stat: 'éxito', mensaje: 'Este funcionó'}, {stat: 'éxito', mensaje: 'este funcionó'}, {stat: 'stitsing', mensaje: 'este funcionó'}]; longitud = mensajes.length; // badfunction inbox (mensajes) {elementos = '<ul>; '<li>' + mensajes [i] .message + '</li>';} elementos de retorno + '</ul>';} // GoodFunction Inbuncion (mensajes) {elementos = []; for (i = 0; i <longitud; i ++) {elementos [i] = mensajes [i] .message;} return '<ul> <li>' + itemss.JoN ('</</</</</</</</</</</</</</</</</</</</</</</li>' '. '</li> </ul>';}Funciones
// expresión de la función anónima..var anyonymous = function () {return true;}; // name function expression.var name = function named () {return true;}; // Instant Reference Function (function () {console.log ('Bienvenido a Internet. Sigue me.');}) ();Nunca defina funciones en el código de bloque de no función (si, mientras). En consecuencia, la función se asigna al nombre de la variable externa en el medio del bloque de código.
// badif (currentUser) {function test () {console.log ('nope.');}} // Goodvar test; if (currentUser) {test = function () {console.log ('yup'); }; // Ten cuidado con el semicolón.}Propiedades (propiedades)
Use la sintaxis del punto para acceder a las propiedades.
var luke = {jedi: true, edad: 28}; // badvar isjedi = luke ['jedi']; // goodvar isjedi = afortunado.jedi;Al acceder a las propiedades del objeto usando variables, use [] corchetes para acceder
var luke = {Jedi: true, edad: 28}; función getProp (prop) {return luke [prop];} var isjedi = getProp ('jedi');