变量提升的含义
在了解let、var、const三者区别之前,首先我们得理解什么是变量提升,简单地说,一段代码在执行前会进行预解析,一般是先解析函数的声明和变量的定义,之后对函数和变量进行计算和赋值等一系列操作
1.变量声明
- let 声明变量初始化并修改值
- var 声明的变量具有变量提升的特点,会自动提升到作用域最顶端
- const 声明的常量不能修改
// var 声明变量初始化并修改值
console.log(a);
var a = 5
// let 声明变量初始化并修改值
var b = 10;
console.log(b);
b = 20
// const 声明常量初始化并修改值
const c = '20';
2.作用域
- let可以在块级作用域内声明
console.log(num) // undefined
var num = 20
3.重复声明
- let不允许在相同的作用域里面,去声明同一变量
- var是可以在相同的作用域里面,去重复地声明同一个变量,不过后面声明的变量一般会覆盖前面的变量
var num = 20
var num = 30
console.log(a) // 30