标签:提升 过程 函数 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