Las variables declaradas por LET y const solo son válidas dentro del bloque de código.
{Let a = 10; var b = 1;} a // referenceError: a no está definido.b // 1Sin promoción variable
Las variables deben usarse después de la declaración, de lo contrario se informará un error.
var tmp = 123; if (true) {tmp = 'ABC'; // referenceErrorlet tmp;}No se permiten declaraciones repetidas
// Función de error () {let a = 10; var a = 1;}Alcance de nivel de bloque
función f () {console.log ('¡Estoy afuera!'); } (function () {if (false) {// Repita la función de la función f () {console.log ('¡Estoy dentro!');}} f ();} ()); // ¡Estoy dentro! Promoción de la función ES5 // ¡Estoy afuera! Alcance de nivel de bloque ES6comando constante
Declarar una constante de solo lectura. Una vez declarado, el valor de la constante no se puede cambiar.
Una vez que se declara una variable, debe inicializarse de inmediato y no se puede dejar para asignarse más tarde.
Las variables globales declaradas por Let Command, const comando y comando de clase no pertenecen a las propiedades del objeto global.
var a = 1; // Si en el entorno de replica de nodo, se puede escribir como global.a // o utilizando un método general, se puede escribir como este.awindow.a // 1let b = 1; window.b // indefinido
A continuación, te presentaré el comando const de ES6 por separado
JS, que siempre se ha centrado en ECMA, nunca ha tenido el concepto de constantes, y ES6 ha compuesto por este defecto;
const foo = 'foo'; foo = 'bar'; // typeError: asignación a una variable constante.
El ejemplo anterior declara una constante del tipo básico. Si intenta modificar el valor inicial, se informará un error; Si se trata de un valor del tipo de referencia, también se aplica, pero una cosa debe ser prestada la atención, dar un ejemplo:
const foo = []; foo = [1]; // Asignación a una variable constante.
Un error normal, no hay problema, mira de nuevo:
const foo = [1,2,3]; foo [1] = 4; console.log (foo) // [1, 4, 3]
¿Por qué no hay error en esto? ¿Y se puede modificar con éxito? La diferencia entre estos dos ejemplos es que el primero ha cambiado el contenido correspondiente del puntero (debe estar familiarizado con el tipo de referencia JS) y el segundo aún no ha cambiado el apuntar, pero el contenido del objeto de señalización ha cambiado. Para Foo, solo soy un puntero responsable de señalar el objeto correspondiente. En cuanto al contenido del objeto, no me importa mi negocio, por lo que puedo modificarlo; Si no quiero que el contenido cambie, puedo usar otro método;
const foo = object.Freeze ([1,2,3]); foo [1] = 4; console.log (foo) // [1, 2, 3]
De esta manera no tiene que preocuparse por ser modificado;