在JavaScript代码执行之前,它首先被解析和编译。在编译阶段,变量和方法申明将被放到内存中,这就是所谓的提升。 要注意的是,只有申明会被提升,而初始化不会。这意味着,如果你声明和初始化一个变量并且使用它,它的值并没有被直接初始化。这是一个简单的解释,我们来看一下下面的场景:
function
会变量提升
var
var 提升,但是值不会初始化
const 和 let
会提升,但他们不会初始化为 undefined,而是报错。
最佳实践
- 在使用前总是定义变量、方法以及对象和类。ESlint可以帮助你。
- 如果你的环境允许,优先使用 const和 let 而不是var。
- 如果条件允许只使用箭头函数或者function声明,保持一致性。