菜鸟记录: javaScript 的解析问题。
如:
代码1
<script type="text/javascript">
var a = 1;
fun1();
function fun1(){
var b = 2;
console.log(b);
console.log(a);
}
</script>
输出结果 :
2
1
再看往下看
代码2
<script type="text/javascript">
var a = 1;
fun1();
function fun1(){
var b = 2;
console.log(b);
console.log(a);
var a = "123";// 相比于代码1 增加一行代码
}
</script>
输出结果为:
2
undefined
代码2中 a的结果 为什么不是 1呢?
那么了解一下预解析就可以明白了。
预解析
1.先查找 script 标签
2.再查找 var 与 function 还有参数 并靠前。
如下:
1.先找script 标签
2.全局域解析结果
script type="text/javascript">
var a;
function fun1(){
var b = 2;
console.log(b);
console.log(a);
var a = "123";
}
a = 1;
fun1();
</script>
3.执行到 fun1() 时 执行了 局部域预解析
function fun1(){
var b;
var a;
b = 2;
console.log(b);
console.log(a);
a = "123";
}
这样 代码2 中的 a的结果值 就显而易见喽。