var、let、const之间的区别
let和var
相同点:在全局声明的变量是全局变量,在局部声明的变量是局部变量
不同点:1、let声明的变量不能重复声明
2、let声明的变量不能提升
3、let声明的变量只在当前块作用域中有效
4、let声明的变量产生暂时性死区,只在当前块作用域中查找
const: 1、const声明的变量是常量,不能改变
2、const声明的变量必须赋初值
与let一样
3、const声明的变量不能重复声明
4、const声明的变量不能提升
5、const声明的变量只在当前块作用域中有效
6、const声明的变量产生暂时性死区,只在当前块作用域中查找
相同点
let arr=1
function fn(){
let b=2
console.log(b);//在局部声明的变量是局部变量
console.log(arr);//1
}
fn()
console.log(arr);//1 在全局声明的变量是全局变量,
console.log(b);//b is not defined
1.let声明的变量不能重复声明
let obj=10
let obj=20
console.log(obj);
2、let声明的变量不能提升
function fn(){
console.log(c);//Uncaught ReferenceError: Cannot access 'c' before initialization
let c=20//let 声明的变量不会提升
}
fn()
- let声明的变量只在当前的块作用域内有效. 块作用域:{}
- let声明的变量在块作用域内产生暂时性死区,如果在块作用域内去操作该变量,只会在当前的块状作用域内查找
{
let m=10
console.log(m);
}
console.log(m);// m is not defined
let w=3
while( w>0){
let p=4
w--
console.log(p);
}
console.log(p);
1、const声明的变量是个常量,不可以修改
const demo=[1]
console.log(demo);
demo='2'
console.log(demo);
2、const声明的变量必须赋初值
const demo2;
3、不能重复声明
const demo3=2
const demo3=3
4、不能进行变量的提升
console.log(demo4);
const demo4=4
5、只在当前的块作用域内有效
{
const demo5=5
console.log(demo5);
}
console.log(demo5);//报错
6、会产生暂时性死区
var num=6
function fn(){
const num=6
console.log(num);
// const num=6
}
fn()