Uso básico
- var declara variables
- let reemplaza var para declarar variables
- declaración constante constante
Explicación detallada de const
const está diseñado para situaciones en las que no desea reasignar el valor una vez inicializado.
Cosas a tener en cuenta sobre const
1. Utilice const para declarar constantes. Una vez declaradas, deben inicializarse inmediatamente y no pueden dejarse para una asignación posterior.
//错误写法
const sex;
sex='male';
//正确写法
const sex = 'male';
2. Si la constante declarada por const es un tipo de datos de referencia, su valor se puede modificar sin reasignación
, pero el tipo de datos básico no . Por ejemplo
const person = {
username: 'Alex' };
// person = {};错误
person.username = 'ZhangSan';
console.log(person);
La diferencia entre let, const y var.
1. Declaración repetida:
si una variable o constante existente se declara nuevamente,
se permite que var se declare repetidamente, pero no se permiten let y const.
//会报错
function func(a) {
let a = 1;
}
func();
2. Promoción de variable
var promoverá la declaración de la variable a la parte superior del alcance actual
. Por ejemplo
console.log(a);
var a = 1;
Equivalente a
var a;
console.log(a);
a=1;
No hay promoción variable para let y const.
Por ejemplo
console.log(a);
let a = 1;
3. Zona muerta temporal
Mientras existan let y const en el alcance, las variables o constantes declaradas por ellos se "vincularán" automáticamente a esta área y ya no se verán afectadas por el alcance externo
.
let a = 2;
function func(){
console.log(a);
let a = 1;
}
func();
La variable a en la función ha sido vinculada a la función, por lo que la variable externa a no se puede leer, por lo que se informará un error
4. Alcance a nivel de bloque (la diferencia más importante)
var no tiene un alcance a nivel de bloque .
for (var i = 0; i < 3; i++) {
console.log('infor--'+i);
}
console.log(i);
La variable i solo se usa para controlar el ciclo, pero no desaparece una vez finalizado el ciclo, debido a la promoción de la variable, se filtra a una variable global.
let/const tiene alcance de bloque
for (let i = 0; i < 3; i++) {
console.log('infor--'+i);
}
console.log(i);
i sólo es válido dentro de un bucle for.¿Cuáles
son los alcances a nivel de bloque?
- {}
- para(){}
- mientras(){}
- hacer{}mientras()
- si(){}
- cambiar(){}
Sugerencias para usar let y const
Utilice const de forma predeterminada y use let solo si sabe que es necesario modificar el valor de la variable.