let
const
var let const 的区别
let
使用let声明变量只在当前块级作用域下生效
<script>
// console.log(a);//undefined
{
var a = 10
}
console.log(a);//10
// console.log(b);//报错
{
let b = 10
console.log(b);//10
}
// console.log(b);//报错
</script>
可以看到在花括号使用var声明一个变量,在花括号外可以使用,但是在花括号内使用let声明就不能在外部使用
let使用不允许重复声明
<body>
<script>
let a=10
let a=20
</script>
</body>
将上面代码写入将会报错
let声明的变量存在暂时性死区---TDZ
<script>
let b = 20
function Fn() {
console.log(b);//20
if (true) {//TDZ开始
console.log(b);//报错
let b = 50//TDZ结束
}
}
Fn()
</script>
let存在块级作用域
et声明的变量一经声明就和当前作用域下绑定,这个作用域就是块级作用域
<script>
{
{
let a = 10
console.log(a);//10
}
console.log(a);//报错
}
</script>
const
const声明变量与let基本一样,声明的是常量,const声明的变量不能修改
const a = 0
a = 20
console.log(a);//报错
const声明的变量不可以重复声明
<script>
const a = 10
const a = 20
</script>
以上代码放入也会报错
const存在暂时性死区
<script>
let b = 20
function Fn() {
console.log(b);//20
if (true) {//TDZ开始
console.log(b);//报错
const b = 50//TDZ结束
}
}
Fn()
</script>
const存在块级作用域
<script>
{
{
const a = 10
console.log(a);//10
}
console.log(a);//报错
}
</script>
const声明变量必须赋值
<script>
const a = 0;
console.log(a);//0
a = 10// 报错
</script>
var let const 三者的区别
let const 不存在变量提升
let const 存在暂时性死区
let const 存在块级作用域
let const 不能重复声明
const 必须初始化(必须赋值)、
const 声明常量,let声明变量
const 声明的基本数据类型不可以修改,复杂的数据类型可以更改内容,多少不能更改内存地址