javascript中的var,let,const是什么?
都是用来声明量的
var,let,const的区别?
var用来声明变量,存在变量提升,容易在声明变量之前调用。
let 用来声明变量,但不存在变量提升,声明变量后才可调用,不然报错
const 用来声明常量,也不存在变量的提升,声明变量后才调用,不然报错。
console.log(a);//undefined
var a=1;
//变量提升
暂时性死区
const和let都存在暂时性死区。
解决:1.不使用let和const,2.使用闭包
var a=123;
if(true){
let a=456;
console.log(a);
}
在编程中,使用let声明变量之前,变量都不可使用。这种使用就是暂时性死区简称TDZ。
只有声明变量时,才可以获取和使用该变量。
重复声明变量
var 可以允许重复声明变量。
let 和const在同一个作用域下不允许重复声明变量
var a=1;
var a=1;
console.log(a);
let b=2;
let b=2;
console.log(b)
const c=3;
const c=3;
console.log©
块级作用域
var 不存在块级作用域
let和const存在块级作用域
具体块级作用域指的是 由{},if语句和for语句中的{}也算是块级作用域。
es5中也有作用域有全局作用域,函数作用域,没有块级作用域。
修改声明的变量
var和let都可以
const声明只声明一个常量,声明后就不能改变。
const一旦声明,必须初始化,不能拖到赋值。