A, y mucho
1, permiten las variables declaradas válidas únicamente en que el alcance a nivel de bloque
if(true){
let a=10; //let定义a变量
console.log(a); // 10
}
console.log(a); //a没有被定义
Este campo se presta a nivel de bloque si es grande entre corchetes
2, permiten las variables declaradas elevación variable no existe
No entiendo la variable de elevación de un socio pequeño puede ir https://blog.csdn.net/weixin_42397257/article/details/89147206
3, hay un let variable temporal declarada zona muerta
var num=10;
if (true){
console.log(num); //报错,未声明变量
let num=20; //let声明的变量会与它所在的块级作用域进行绑定
}
Por ejemplo:
var arr=[];
for (let i=0;i<3;i++){ //i的作用域是for循环内
arr[i]=function () {
console.log(i);
}
}
arr[0]();
arr[1]();
arr[2]();
Explicarlo aquí:Cada bucle se genera para un ámbito de nivel de bloqueY cada uno dentro de un alcance a nivel de bloquei tener valores diferentespor lo tantoCada vez que una llamada a la función Tengo que encontrar el valor en el ámbito de sus respectivas
Dos, var
1, una variable declarada con var no tener alcance a nivel de bloque
if(true){
var a=10; //var定义a变量
console.log(a); // 10
}
console.log(a); // 10
for (var i=0;i<10;i++); //在循环体内的i
console.log(i); //在循环体外的i,输出为10
Para el castaño:
var arr=[]; //arr和i都是全局变量
for (var i=0;i<3;i++){
arr[i]=function () {
console.log(i);
}
}
arr[0]();
arr[1]();
arr[2]();
¿Por qué es esto así, hablar de mi entendimiento:i es una variable global,I y la función de la que se asigna en el momento de la llamada, y cuando el ciclo se completa para i = 3Utilizando el resultado de salida es 3
2, la presencia var de elevación variable de
Esto es lo que todos sabemos, no entrar en detalles
Tres, const (declaraciones de constantes, la misma cantidad de direcciones de memoria)
1, tiene un alcance a nivel de bloque
if(true){
const A=10; //A有块级作用域
console.log(A);
}
console.log(A); //访问不到A
2, cuando las declaraciones de constantes const deben asignar un valor inicial
3, después de que el valor de los valores constantes (dirección de memoria) inmutable
const A=10;
// A=20; 这里的A不可修改
console.log(A);
const Arr=[10,20];
Arr[0]=30;
Arr[1]=40;
//Arr=[50,60] 这样是不允许的,改变了Arr地址
console.log(Arr); //Arr的值没有修改,而修改了值(地址)对应的值
const Obj={
name:'小明',
age:10
};
Obj.name='小华';
Obj.age=20;
console.log(Obj); //Obj的值没有修改,而修改了值(地址)对应的值
Modificar el valor aquí no se modifique el valor constante (dirección), pero que modificar el valor del valor de dirección