一,const和let
- 都用着声明;
- 都存在块级作用域;
{ const a = '澎湃'; let b = 18; // 块级外不能访问a和b}复制代码
- 不会变量声明提升(var存在变量什么提升);
- 同一作用域内,不允许重复声明;
let a = '珺';let a = 'pp';// Uncaught SyntaxError: Identifier 'a' has already been declared// 报错,同一作用域内,不允许重复声明;复制代码
- const 声明一个只读的常量。一旦声明,常量的值就不能改变(如果声明是一个对象,那么不能改变的是对象的引用地址)
- let通常声明变量,可以改变;
二,与var
- var可以声明变量和常量。而且没有块级作用域;
- 存在变量声明提升;
console.log(a) // undefineda = 18;console.log(a) // 18var a = 22;console.log(a) // 22// 上面其实就相当于下面// js在执行中,会先预解析。将var的声明提升到最先。var a;console.log(a) // undefineda = 18;console.log(a) // 18a = 22;console.log(a) // 22// fun函数最优先提升到最前面,所以在fun(3,5)也可以执行并返回8。// 但并不建议实际开发中这样玩。fun(3,5) //8function fun(a,b){ return a + b;}复制代码