标签:提升 过程 函数 pre 优先 变量 div 全局 打印
预解析过程:
1.把var申明的变量提升到当前作用域的最前边,不会提升赋值
2.把函数申明提升盗作用域的最前边
3.如果函数同名,后者会覆盖前者
4.如果var申明的和函数申明的同名,函数优先
案例:
1.
<script> var num = 10; fn1(); function fn1() { console.log(num) var num = 20 } </script>
预解析后:
<script> var num = 10; function fn1() { var num console.log(num) //10 num = 20 } fn1(); </script>
打印结果:undefined
2.
<script> fn(); console.log(c); console.log(b); console.log(a); function fn() { var a = b = c = 9; console.log(a); console.log(b); console.log(b); } </script>
预解析后:
<script> function fn() { var a = 9; //局部 b=9; //隐式全局 c=9; //隐式全局 console.log(a); console.log(b); console.log(c); } fn() console.log(c); console.log(b); console.log(a); </script>
打印结果:
9 9 9 9 9 报错
标签:提升 过程 函数 pre 优先 变量 div 全局 打印
原文地址:https://www.cnblogs.com/zhaodz/p/11590615.html