JavaScript let y const
ECMAScript 2015(ECMAScript 6)
ES2015 (ES6) añadió dos palabras clave importantes de JavaScript:letyconst。
Las variables declaradas con let solo son válidas dentro del bloque de código donde se encuentra el comando let.
const declara una constante de solo lectura; una vez declarada, el valor de la constante no se puede cambiar.
Antes de ES6, JavaScript solo tenía dos ámbitos:Variables globalesyVariables locales dentro de funciones。
Variables globales
El ámbito de las variables declaradas fuera de una función es global:
Ejemplos
Pruébalo »
Las variables globales se pueden acceder desde cualquier lugar del programa JavaScript.
Variables locales
El ámbito de las variables declaradas dentro de una función es local (dentro de la función):
Ejemplos
Pruébalo »
Las variables declaradas con var dentro de una función solo se pueden acceder dentro de la función; si no se usa var, son variables globales.
Ámbito de bloque en JavaScript (Block Scope)
Las variables declaradas con la palabra clave var no tienen la característica de ámbito de bloque; todavía se pueden acceder fuera de {}.
{
var x = 2;
}
// 这里可以使用 x 变量
Antes de ES6, no existía el concepto de ámbito de bloque.
ES6 puede usar la palabra clave let para implementar el ámbito de bloque.
Las variables declaradas con let solo son válidas dentro del bloque de código donde se encuentra el comando let{}dentro son válidas; fuera{}de él no se pueden acceder.
{
let x = 2;
}
// 这里不能使用 x 变量
Redefinir variables
Usar la palabra clave var para volver a declarar variables puede causar problemas.
Volver a declarar una variable dentro de un bloque también vuelve a declarar la variable fuera del bloque:
Ejemplos
Pruébalo »
La palabra clave let puede resolver este problema, porque solo dentro del bloque de código donde se encuentra el comando let{}es válida.
Ejemplos
Pruébalo »
Compatibilidad del navegador
Internet Explorer 11 y versiones anteriores de navegadores no son compatibles con la palabra clave let.
La siguiente tabla enumera los números de versión mínimos en los que cada navegador es compatible con la palabra clave let.
| Chrome 49 | IE / Edge 12 | Firefox 44 | Safari 11 | Opera 36 |
| Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
Ámbito en bucles
Usando la palabra clave var:
Ejemplos
Pruébalo »
Usando la palabra clave let:
Ejemplos
Pruébalo »
En el primer ejemplo, se usóvarla palabra clave, y las variables que declara son globales, tanto dentro como fuera del bucle.
En el segundo ejemplo, se usóletla palabra clave, y el ámbito de las variables que declara solo está dentro del bucle; las variables fuera del bucle no se ven afectadas.
Variables locales
Dentro de una función, al usarvaryletla palabra clave, las variables declaradas son algo similares.
Su ámbito eslocal:
// 使用 var
function myFunction() {
var carName = "Volvo"; // 局部作用域
}
// 使用 let
function myFunction() {
let carName = "Volvo"; // 局部作用域
}
Variables globales
Fuera de una función o fuera de un bloque de código, al usarvaryletla palabra clave, las variables declaradas también son algo similares.
Su ámbito esglobal:
// 使用 var var x = 2; // 全局作用域 // 使用 let let x = 2; // 全局作用域
Usar variables globales en código HTML
En JavaScript, el ámbito global es relativo al entorno de JavaScript.
En HTML, el ámbito global es relativo al objeto window.
Usandovarla palabra clave, las variables de ámbito global pertenecen al objeto window:
Usandoletla palabra clave, las variables de ámbito global no pertenecen al objeto window:
Ejemplos
Pruébalo »
Reasignar variables
Usandovarla palabra clave, las variables declaradas se pueden modificar en cualquier lugar:
En el mismo ámbito o ámbito de bloque, no se puede usarletla palabra clave para reasignarvarlas variables declaradas con la palabra clave:
var x = 2; // 合法
let x = 3; // 不合法
{
var x = 4; // 合法
let x = 5 // 不合法
}
En el mismo ámbito o ámbito de bloque, no se puede usarletla palabra clave para reasignarletlas variables declaradas con la palabra clave:
let x = 2; // 合法
let x = 3; // 不合法
{
let x = 4; // 合法
let x = 5; // 不合法
}
En el mismo ámbito o ámbito de bloque, no se puede usarvarla palabra clave para reasignarletlas variables declaradas con la palabra clave:
let x = 2; // 合法
var x = 3; // 不合法
{
let x = 4; // 合法
var x = 5; // 不合法
}
letLa palabra clave se puede volver a declarar y asignar en diferentes ámbitos o diferentes ámbitos de bloque:
let x = 2; // 合法
{
let x = 3; // 合法
}
{
let x = 4; // 合法
}
Elevación de variables
En JavaScript, las variables definidas con la palabra clave var se pueden declarar después de usarse, es decir, las variables se pueden usar antes de declararse (Elevación de variables en JavaScript)。
Las variables definidas con la palabra clave let no se pueden declarar después de usarse, es decir, las variables deben declararse antes de usarse.
// 在这里不可以使用 carName 变量 let carName;
La palabra clave const
const se usa para declarar una o más constantes; deben inicializarse al declararse, y después de la inicialización el valor no se puede modificar:
constDefinir constantes es similar a usarletvariables definidas con:
- Ambos tienen ámbito de bloque
- Ambos no pueden tener el mismo nombre que otras variables o funciones en su ámbito
También hay dos diferencias entre ellos:
constLas constantes declaradas deben inicializarse, mientras queletlas variables declaradas no necesitan inicializarse.- El valor de una constante definida con const no se puede modificar mediante reasignación, ni se puede volver a declarar. Mientras que el valor de una variable definida con let sí se puede modificar.
var x = 10;
// 这里输出 x 为 10
{
const x = 2;
// 这里输出 x 为 2
}
// 这里输出 x 为 10
Las constantes declaradas con const deben inicializarse:
// 错误写法 const PI; PI = 3.14159265359; // 正确写法 const PI = 3.14159265359;
No son constantes reales
La esencia de const: las variables definidas con const no son constantes, no son inmutables; define una referencia constante a un valor. Los objetos o arrays definidos con const son en realidad mutables. El siguiente código no produce error:
Ejemplos
Pruébalo »
Pero no podemos reasignar un objeto constante:
Ejemplos
Pruébalo »
El siguiente ejemplo modifica una matriz constante:
Ejemplos
Pruébalo »
Pero no podemos reasignar una matriz constante:
Ejemplos
Pruébalo »
Compatibilidad del navegador
Internet Explorer 10 y versiones anteriores no admiten la palabra clave const.
La siguiente tabla enumera las versiones mínimas de los navegadores que admiten la palabra clave const.
| Chrome 49 | IE / Edge 11 | Firefox 36 | Safari 10 | Opera 36 |
| Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
Reasignar variables
UsandovarLas variables declaradas con la palabra clave se pueden modificar en cualquier lugar:
Ejemplos
En el mismo ámbito o ámbito de bloque, no se puede usarconstla palabra clave para redeclararvaryletlas variables declaradas con la palabra clave:
var x = 2; // 合法
const x = 2; // 不合法
{
let x = 2; // 合法
const x = 2; // 不合法
}
En el mismo ámbito o ámbito de bloque, no se puede usarconstla palabra clave para redeclararconstlas variables declaradas con la palabra clave:
const x = 2; // 合法
const x = 3; // 不合法
x = 3; // 不合法
var x = 3; // 不合法
let x = 3; // 不合法
{
const x = 2; // 合法
const x = 3; // 不合法
x = 3; // 不合法
var x = 3; // 不合法
let x = 3; // 不合法
}
constLa palabra clave se puede volver a declarar y asignar en diferentes ámbitos o ámbitos de bloque:
const x = 2; // 合法
{
const x = 3; // 合法
}
{
const x = 4; // 合法
}
Elevación de variables
Las variables definidas con la palabra clave var de JavaScript se pueden declarar después de usarlas, es decir, las variables se pueden usar antes de declararse (Elevación de variables en JavaScript)。
Las variables definidas con la palabra clave const no se pueden declarar después de usarlas, es decir, las variables deben declararse antes de usarse.
carName = "Volvo"; // 在这里不可以使用 carName 变量 const carName = "Volvo";Otras extensiones