a = 1;
var a = 1;
// 上面两种是 ES3,下面两种是 ES6
let a = 1;
const a = 1;
var 变量提升
![](https://img.haomeiwen.com/i15413795/3dd9ff93c8f42632.png)
可以看到在不会执行的函数里var了一个a,结果就不会报错。
有些情况下,比如自己封装一个库,只想暴露一个全局变量,那么 必须用函数把这些声明都包起来,如:
![](https://img.haomeiwen.com/i15413795/532addcdb6215195.png)
ES5的方法:
![](https://img.haomeiwen.com/i15413795/d016c7c5d298ae77.png)
虽然使用立即执行函数可以解决这个问题,但是相对来说很麻烦
ES6的方法:
![](https://img.haomeiwen.com/i15413795/a90e986206a88375.png)
可以看到在花括号外面已经找不到a这个变量
用 let 方法声明的变量,在看到花括号以后便不会再向上提升,let的作用域在最近的{}之间 它是块级变量!
![](https://img.haomeiwen.com/i15413795/3160f7e555818a35.png)
const与var let的区别
const声明的是一个常量,只有一次赋值机会,并且声明的时候必须得赋值
![](https://img.haomeiwen.com/i15413795/6bef36e4fc9f47d5.png)
网友评论