这几天逛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.
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;
(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);
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);
Finalmente, se puede utilizar 闭包
para evitar la contaminación global, consulte: Cierre Principio