//let与var的区别
//1.所声明的变量只在let所在的代码块内有效
{
let a = 1;
var b = 2;
}
a //error
b; //1
//2.不存在变量提升
{
// var 可以变量提升
console.log(a); //undefined
var a = 1;
//let 不存在变量提升,会报错
console.log(b);
let b; //error
}
// 3.暂时性死区
//如果区块中存在let和const的命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。只要在声明之前使用这些变量,就会报错,俗称暂时性死区(TDZ)
{
tem = 123; //error
console.log(tem); //error
let tem; //TDZ结束
console.log(tem); //undefined
tem = 456;
comsole.log(tem); //456
}
//不允许重复声明变量
//报错
function() {
let a = 10;
var a = 20;
}
//报错
function() {
let a = 10;
let a = 20;
}
//不能在函数内部重新声明参数
function(a) {
let a = 10; //报错
}
const命令
const声明一个只读的常量,一旦声明,常量的值就不能改变。
const a = 1;
a = 2;//error