预解析(js)var 先声明提升 再函数声明提升
变量提升是 JavaScript 中比较“奇怪”的现象,它允许在变量声明之前即被访问,
只有var 关键字声明变量,会存在变量提升
总结:
-
变量在未声明即被访问时会报语法错误
-
变量在声明之前即被访问,变量的值为
undefined
-
let
声明的变量不存在变量提升,推荐使用let
-
变量提升出现在相同作用域当中
-
实际开发中推荐先声明再访问变量
-
我们不建议使用var声明变量
<body>
<script>
// var 声明的变量可以声明提升
// 预解析(js)var 先声明提升 再函数声明提升
// var age;
// function fun() {
// console.log(9); //9
// }
// console.log(age); //undefined
// age = 10;
// fun();
// 函数预解析后
console.log(age); //undefined
var age = 10;
fun();
function fun() {
console.log(9); //9
}
</script>
</body>
函数提升与变量提升比较类似,是指函数在声明之前即可被调用
总结:
-
函数提升能够使函数的声明调用更灵活
-
函数表达式一定要把调用写在下面
-
函数提升出现在相同作用域当中
-