Las diferencias específicas let, var, const de

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没有被定义

Aquí Insertar imagen Descripción
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声明的变量会与它所在的块级作用域进行绑定
            }

Aquí Insertar imagen Descripción
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]();

Aquí Insertar imagen Descripción
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

Aquí Insertar imagen Descripción

for (var i=0;i<10;i++);				//在循环体内的i
            console.log(i);			//在循环体外的i,输出为10

Aquí Insertar imagen Descripción
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]();

Aquí Insertar imagen Descripción
¿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

Aquí Insertar imagen Descripción

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的值没有修改,而修改了值(地址)对应的值

Aquí Insertar imagen Descripción
Modificar el valor aquí no se modifique el valor constante (dirección), pero que modificar el valor del valor de dirección

Publicado 24 artículos originales · ganado elogios 0 · Vistas 246

Supongo que te gusta

Origin blog.csdn.net/weixin_45969777/article/details/104913857
Recomendado
Clasificación