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 声明的基本数据类型不可以修改,复杂的数据类型可以更改内容,多少不能更改内存地址
let和const是ES6引入的新的变量声明方式,它们有块级作用域,不存在变量提升且不能重复声明。let允许声明变量,但不允许在同一作用域内重新声明或改变值;const用于声明常量,一旦赋值后不能修改。var则有全局或函数作用域,存在变量提升,可以在同一作用域内重新声明。
793

被折叠的 条评论
为什么被折叠?



