悬挂变量声明(变量提升)
js 会提升所有变量声明,将变量移到当前作用域的顶部
js 引擎的工作方式是
1、先解析代码,获取所有被声明的变量
2、然后在运行,分为预处理和执行两个阶段
<script>
function fun() {
// var str;
console.log(str) // undefined
var str = '123'
console.log(str) // 123
}
fun()
</script>
<script>
// var str
console.log(str) // undefined
var str = "123"
</script>
<script>
// var str
console.log(str) // undefined
if(false) {
var str = "123"
}
console.log(str) // undefined
</script>
<script>
// function fun
fun() // true
function fun() {
console.log("123")
}
fun() // true
</script>