El entrevistador hecho me pidió en JavaScript var, const dejar y qué diferencia una pregunta tan simple?

这几天逛CSDN论坛,发现在一些前端模块发的问题大都是因为var、let和const搞不清楚导致的,今天我来浅析下,希望对看到这篇博客的童鞋有所帮助~


Lo que sabemos es que ... (Inglés Composición principios universales) : Hay tres variables declaradas en la forma JavaScript: var, dejado, const.

directorio

1. ser

(1) Después de la var variable definida puede ser modificado, si la inicialización no se emite undefined, sin error.

var a;
console.log(a);   // undefined
// -----------------------------
console.log(a);     // undefined
var a = 1;

(2) var variable definida, a través del acceso del bloque no puede acceder a través de la función.

(3) var alcance única función, no a nivel de bloque alcance.

(4) var está en el ámbito ámbito de la función, se puede utilizar para declarar una var variable global, puede declarar una variable local. En una 函数内variable a declarar utilizando var, entonces la variable es eficaz en esta función.

  • Las variables globales: Las variables definidas fuera de una función, todo el ámbito del archivo de código.
  • Las variables locales: Las variables definidas en la función, el alcance actual es función interna.
var a = 666;  
console.log("函数外var定义a:" + a); // 函数外var定义a:666

function cg(){
a = 888;
console.log("函数内var定义a:" + a);// 函数内var定义a:888
}

cg();
console.log("函数调用后var定义a为函数内部修改值:" + a);
// 函数调用后var定义a为函数内部修改值:888

(5) se puede definir repetidamente sobrescribir el valor anterior de este último.

var a = 1;
var a = 2;
console.log(a); // 2

2. Sea

(. 1) es un ámbito de nivel de bloque dejó, que las definiciones de las funciones internas usado, sin efecto sobre la función externa.

let a = 666;  
console.log("函数外let 定义a:" + a); // 函数外let 定义a:666

function cg(){
let a = 888;
console.log("函数内let 定义a:" + a);// 函数内let 定义a:888
}

cg();
console.log("函数调用后let 定义a为函数内部修改值:" + a);
// 函数调用后let定义a为函数内部修改值:666

(2) no hay declaraciones de variables de antelación, de lo contrario será error.

console.log(a);
let a = 1;

Aquí Insertar imagen Descripción

(3) dejar definidos por variables que sólo se puede acceder en ámbito de bloque, puede bloquear el acceso no cruz, que no puede acceder función cruz.

    var c=11;
{
    let c=12;
    console.log(c);// 12
}
    console.log(c);// 11

(4) no puede ser redefinido, de lo contrario será error.

let a = 1;
let a = 2;
console.log(a);

Aquí Insertar imagen Descripción

3. const

variables definida (1) const 不可以modificaciones, y 必须la inicialización.

const b = 2;// 正确
const b;   // 错误,必须初始化

(2) const utiliza generalmente para declarar una constante, y una declaración de constante no se le permite el cambio, es 只读属性por lo tanto necesario en el 声明的同时赋值.

(3) const y dejar, son ámbito de nivel de bloque, sólo se puede acceder ámbito de bloque, la presencia temporal de los muertos, no hay declaraciones de variables de antemano, no permite que las definiciones duplicadas.

const b = 2; 
const b = 2; 
console.log(b);

Aquí Insertar imagen Descripción


Finalmente, se puede utilizar 闭包para evitar la contaminación global, consulte: Cierre Principio

Publicado 88 artículos originales · ganado elogios 398 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_42881768/article/details/105056122
Recomendado
Clasificación