Prácticas recomendadas de JavaScript
- Página anterior Guía de estilo JS
- Página siguiente Errores JS
Evite variables globales,new
,===
,eval()
Evitar variables globales
Intente usar lo menos posible variables globales.
Incluye todos los tipos de datos, objetos y funciones.
Las variables globales y las funciones pueden ser sobrescritas por otros scripts.
Utilice variables locales en su lugar y aprenda a cómo usarClosures。
Siempre declarar variables locales
Todas las variables utilizadas dentro de la función deben declararse comoLocalVariables.
Variables localesEs necesarioA través de var Declarar con palabras clave, de lo contrario se convertirán en variables globales.
El modo estricto no permite variables no declaradas.
Declarar en la parte superior
Una buena práctica de codificación es declarar todas las declaraciones en la parte superior de cada sección de script o función.
Los beneficios de esto son:
- Obtener un código más limpio
- Ofrece un buen lugar para buscar variables locales
- Es más fácil evitar variables globales innecesarias
- Reducir la posibilidad de redeclaraciones innecesarias
// Declarar en la parte superior var firstName, lastName, price, discount, fullPrice; // Usar más tarde firstName = "Bill"; lastName = "Gates"; price = 19.90; discount = 0.10; fullPrice = price * 100 / discount;
También se puede usar para variables de bucle:
// Declarar en la parte superior var i; // Usar más tarde for (i = 0; i < 5; i++) {
Por defecto, JavaScript moverá todas las declaraciones al principio (levantamiento de JavaScript).
Inicializar variables
Es una buena costumbre inicializar las variables cuando se declaran.
Los beneficios de esto son:
- Código más limpio
- Inicialice las variables en una ubicación separada
- Evite valores no definidos
// Declare e inicialice en la parte superior var firstName = "", lastName = "", price = 0, discount = 0, fullPrice = 0, myArray = [], myObject = {};
La inicialización de variables nos permite entender el uso esperado y el tipo de datos esperado.
No declare objetos de números, cadenas o booleanos
Siempre considere los números, cadenas o valores booleanos como valores primitivos y no como objetos.
Si se declaran estos tipos como objetos, puede ralentizar la ejecución y producir efectos secundarios desagradables:
Ejemplo
var x = "Bill"; var y = new String("Bill"); (x === y) // El resultado es false, porque x es una cadena y y es un objeto.
O incluso peor:
Ejemplo
var x = new String("Bill"); var y = new String("Bill"); (x == y) // El resultado es false, porque no puede compararse un objeto.
No utilice new Object()
- Utilice {} en lugar de new Object()
- Utilice "" en lugar de new String()
- Utilice 0 en lugar de new Number()
- Utilice false en lugar de new Boolean()
- Utilice [] en lugar de new Array()
- Utilice /()/ en lugar de new RegExp()
- Utilice function (){} en lugar de new Function()
Ejemplo
var x1 = {}; // Nuevo objeto var x2 = ""; // Nuevo valor de cadena primitiva var x3 = 0; // Nuevo valor numérico primitivo var x4 = false; // Nuevo valor booleano primitivo var x5 = []; // Nuevo objeto de array var x6 = /()/; // Nuevo objeto de expresión regular var x7 = function(){}; // Nuevo objeto de función
Tenga presente la conversión automática de tipos
Tenga presente que los números pueden convertirse accidentalmente en cadenas o NaN
(No es un número).
JavaScript es de tipo suelto. Las variables pueden contener diferentes tipos de datos y pueden cambiar su tipo de datos:
Ejemplo
var x = "Hello"; // typeof x es cadena x = 5; // cambiar typeof x a numérico
Si se realiza una operación matemática, JavaScript puede convertir los números a cadenas:
Ejemplo
var x = 5 + 7; // x.valueOf() es 12, typeof x es numérico var x = 5 + "7"; // x.valueOf() es 57, typeof x es cadena var x = "5" + 7; // x.valueOf() es 57, typeof x es cadena var x = 5 - 7; // x.valueOf() es -2, typeof x es numérico var x = 5 - "7"; // x.valueOf() es -2, typeof x es numérico var x = "5" - 7; // x.valueOf() es -2, typeof x es numérico var x = 5 - "x"; // x.valueOf() es NaN, typeof x es numérico
Restar cadenas de texto no produce errores, sino que devuelve NaN
(No es un número):
Ejemplo
"Hello" - "Dolly" // devuelve NaN
Usar === para comparar
==
Los operadores de comparación siempre realizan la conversión de tipo antes de la comparación (para que coincida con el tipo).
===
Los operadores comparan forzadamente los valores y los tipos:
Ejemplo
0 == ""; // true 1 == "1"; // true 1 == true; // true 0 === ""; // false 1 === "1"; // false 1 === true; // false
Uso de valores predeterminados de parámetros
Si falta un argumento al llamar a la función, el valor de ese argumento faltante se establecerá como undefined
。
undefined
Los valores pueden destruir su código. Establecer valores predeterminados para los parámetros es una buena costumbre.
Ejemplo
function myFunction(x, y) { if (y === undefined) { y = 0; } }
Por favor reviseParámetros de la funciónEn este capítulo, lea más sobre los parámetros de la función.
use default para finalizar el switch
Por favor use por defecto
para finalizar su switch
La declaración. Incluso si piensa que no es necesario.
Ejemplo
switch (new Date().getDay()) { caso 0: day = "Sunday"; romper; caso 1: day = "Monday"; romper; caso 2: day = "Tuesday"; romper; caso 3: day = "Wednesday"; romper; caso 4: day = "Thursday"; romper; caso 5: day = "Friday"; romper; caso 6: day = "Saturday"; romper; por defecto: day = "Unknown"; }
Evite el uso de eval()
eval()
La función se utiliza para permitir texto como código. En casi todos los casos, no es necesario usarlo.
Debido a que permite que se ejecute código arbitrario, también significa que hay problemas de seguridad.
- Página anterior Guía de estilo JS
- Página siguiente Errores JS