变量提升
目标:了解什么是变量提升
变量提升是JavaScript中比较 “奇怪” 的现象,它允许在变量声明之前即被访问(仅存在于var声明变量)
注意:
- 变量在未声明即被访问时会报 语法错误
- 变量在var声明之前即被访问,变量的值为 undefined
- let/const 声明的变量不存在变量提升
- 变量提升出现在相同作用域中
- 实际开发中推荐先声明再访问变量
// 访问变量 str
console.log(str + 'world!')
// 声明变量 str
var str = 'hello '
结果是:undefinedworld!
变量提升
目标:了解什么是变量提升
说明:
JS初学者经常花很多时间才能习惯变量提升,还经常出现一些意想不到的bug,正因如此,ES6 引入了块级作用域,用 let 或者 const 声明变量,让代码写法更加规范和人性化。
总结
- 哪个关键词声明变量会有变量提升?
var - 变量提升是什么流程?
先把var变量提升到当前作用域最前面
只提升变量声明,不提升变量赋值
然后依次执行代码
我们不建议使用var声明变量