一,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) // undefined
a = 18;
console.log(a) // 18
var a = 22;
console.log(a) // 22
// 上面其实就相当于下面
// js在执行中,会先预解析。将var的声明提升到最先。
var a;
console.log(a) // undefined
a = 18;
console.log(a) // 18
a = 22;
console.log(a) // 22
// fun函数最优先提升到最前面,所以在fun(3,5)也可以执行并返回8。
// 但并不建议实际开发中这样玩。
fun(3,5) //8
function fun(a,b){
return a + b;
}