let、const、var 的区别
1. 使用 var 声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象
2.使用 let 声明的变量,其作用域为该语句所在的代码块内,不存在变量提升
3.使用 const 声明的是常量,在后面出现的代码中不能再修改该常量的值
var 变量的提升:
js运行时先读取变量和函数 ,变量就会被提取到头部。
var关键字声明的变量,无论实际声明的位置在何处,都会被视为声明在函数的顶部(如果声明不在任意函数内,则视为在全局作用域的顶部)
JavaScript引擎的工作方式是,先预解析代码, 获取所有被声明的变量和函数声明,然后再一行一行地运行,这就使所有变量声明的语句,都会被提升到代码的头部,这就是变量提升
log打印 a 本来是错误的做法但是因为变量的提升所以没有报错 打印的undefined
let 关键字
let关键字就是用来声明变量的
使用let关键字声明的变量具有块级作用域
在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的
防止循环变量变成全局变量
使用let关键字声明的变量没有变量提升
使用let关键字声明的变量具有暂时性死区特性
let声明的变量只在所处于的块级有效
let 不存在变量提升
暂时性死区
利用let声明的变量会绑定在这个块级作用域,不会受外界的影响
const 关键字
声明常量,常量就是值(内存地址)不能变化的量
const声明的变量是一个常量
既然是常量不能重新进行赋值,如果是基本数据类型,不能更改值,如果是复杂数据类型,不能更改地址值
声明 const时候必须要给定值