JAVASCRIPT 基础
JAVASCRIPT 中的变量提升
MDN 中说明
Only declarations are hoisted
所以看看下面的代码
1 | console.info(a) //undefined |
1 | a = 2 |
我们来拆解一下
第一种写法等同于
1 | console.info(a) |
根据变量提升的规则
1 | var a |
所以,打印出 undefined 也就通俗易懂了
第二种写法根据变量提升的原则
1 | var a |
所以也就打印出 2
变量提升的规则同样适用于方法声明
1 | myFunc() // Error, myFunc is not a function! |
1 | helloWorld() //Hello World! |
1 | function goodMorning(){ |
有时候变量提升会让我们困惑,则可以使用 ES6 新引入的let或者const关键字来声明变量,let和const声明的变量不存在提升
1 | tmp = 2 // ReferenceError: can't access lexical declaration `tmp' before initialization |