1 、 ES5 vs ES6
ES significa ECMAScript. ECMAScript es una especificación del lenguaje de script Js.
ES5 es la quinta edición de ECMAScript, que se completó en 2009, y las especificaciones se han implementado en los navegadores actuales.
ES6 es la sexta edición de ECMAScript, que se completó en 2015. Este estándar se ha implementado en la mayoría de los navegadores.
ES6 se refiere al estándar de lenguaje JS de próxima generación, incluidos ES2015 a ES2020, etc. ES2015 es equivalente a ES6 de forma predeterminada. ES5 se refiere al estándar de lenguaje de la generación anterior. ES2015 puede entenderse como el límite de tiempo entre ES5 y ES6.
2 、 Babel
Babel es un transcodificador. ES6 se implementa en la mayoría de los navegadores. Para las plataformas que no implementan ES6, puede usar Babel para convertir ES6 a ES5 para su ejecución.
3 、 let && const
- dejar
let y var son similares, la función es declarar una variable.
(1) Alcance diferente
Let es un alcance de bloque, y el alcance solo tiene efecto en su área de bloque de código; var define variables globales, que aún se pueden llamar fuera del bloque de código.
para (sea i = 0; i <1; i ++) { var a = 12; dejar b = i; } a // 12 b // Error de referencia no capturado: b no está definido
(2) Promoción variable
La promoción de variables significa que la declaración de la variable se promueve a la parte superior del código, es decir, se puede llamar a la variable antes de declararla.
El comando let no tiene promoción de variable. Si llama a la variable definida por let antes de la declaración, obtendrá un error.
El comando var se puede invocar a voluntad, siempre que se declare el código.
console.log (a); var a = 234; // undefined console.log (a); dejar a = 234; // Error: no se puede acceder a 'a' antes de la inicialización
(3) Zona muerta temporal
ES6 estipula que si hay let
y const
comandos en el bloque en el bloque de código, las variables declaradas por estos bloques en el bloque forman un alcance cerrado desde el principio .
let
La variable no está disponible hasta que la variable se declare con el comando
// 死 区 开始 hunter = 'abc'; // ReferenceError: No se puede acceder a 'hunter' antes de la inicialización console.log (hunter); // ReferenceError: No se puede acceder a 'hunter' antes de la inicialización let hunter; // 死 区 结束 console.log (hunter); // undefined hunter = "QQQ"; console.log (cazador); // QQQ
(4) Declaración repetida
El comando let es diferente de la var. El comando let no permite declaraciones repetidas
var a = 1; var a = 2; una; // 2 let a = 1; dejar a = 2; // SyntaxError: el identificador 'a' ya se ha declarado
- const
const se usa para declarar constantes. Las constantes deben inicializarse cuando se declaran. Después de la asignación inicial, el valor de la constante no cambiará.
const hunterTest = 123; hunterTest; // 123 hunterTest = 666; // TypeError: asignación a variable constante.
Const, en mi opinión, es guardar la dirección de memoria señalada por la variable, y tiene limitaciones para estructuras de datos simples como Number, String y Boolean. Sin embargo, para las variables de una estructura de datos compuesta, las variables permanecen sin cambios y los valores dentro de las variables pueden cambiar.
const aaa = 123; aaa = 345; // TypeError: asignación a variable constante. const aaaa = { nombre: "YuHang" } aaaa ["GG"] = 234 // {nombre: "YuHang", GG: 234} var bbb = {nombre: "Lisa"}; aaaa = bbb; // TypeError: asignación a variable constante.