<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>01_变量提升与函数提升</title>
</head>
<body>
<!--
1. 变量声明提升* 通过var定义(声明)的变量, 在定义语句之前就可以访问到* 值: undefined
2. 函数声明提升* 通过function声明的函数, 在之前就可以直接调用* 值: 函数定义(对象)
3. 问题: 变量提升和函数提升是如何产生的?
-->
<script type="text/javascript">/*面试题: 输出什么?*/var a = 4function fn () {console.log(a)var a = 5}fn()/*变量提升*/console.log(a1) //可以访问, 但值是undefined/*函数提升*/a2() // 可以直接调用var a1 = 3function a2() {console.log('a2()')}
</script>
</body>
</html>