let
let 語(yǔ)句聲明一個(gè)塊級(jí)作用域的本地變量,并且可選的將其初始化為一個(gè)值;
let可能意味著一個(gè)值掰邢,或者一個(gè)變量可以賦值牺陶,但不能被更改;
在javascript 中 let只創(chuàng)建塊范圍局部變量辣之;
與var關(guān)鍵字不同的是掰伸,它聲明的變量只能是全局或者整個(gè)函數(shù)塊的。
function varTest() {
var x = 1;
if (true) {
var x = 2; // 同樣的變量!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
if (true) {
let x = 2; // 不同的變量
console.log(x); // 2
}
console.log(x); // 1
}
// 定義常量MY_FAV并賦值7
const MY_FAV = 7;
// 報(bào)錯(cuò),要有變量聲明關(guān)鍵字
MY_FAV = 20;
// 輸出 7
console.log("my favorite number is: " + MY_FAV);
// 嘗試重新聲明會(huì)報(bào)錯(cuò)
const MY_FAV = 20;
// MY_FAV 保留給上面的常量麻削,這個(gè)操作會(huì)失敗
var MY_FAV = 20;
// 也會(huì)報(bào)錯(cuò)
let MY_FAV = 20;
// 注意塊范圍的性質(zhì)很重要
if (MY_FAV === 7) {
// 沒(méi)問(wèn)題蒸痹,并且創(chuàng)建了一個(gè)塊作用域變量 MY_FAV
// (works equally well with let to declare a block scoped non const variable)
let MY_FAV = 20;
// MY_FAV 現(xiàn)在為 20
console.log('my favorite number is ' + MY_FAV);
// 這被提升到全局上下文并引發(fā)錯(cuò)誤
var MY_FAV = 20;
}
// MY_FAV 依舊為7
console.log("my favorite number is " + MY_FAV);