重拾JS-11-预解析
作者:互联网
目标:解决以下问题
- 能够知道解析器运行JS分为那两步
思路引导
//坑1 console.log(num);//报错 //坑2 console.log(num);//undefined var num=4; //坑3 fn();//正常输出:嘟嘟嘟 function fn(){ console.log('嘟嘟嘟'); } //坑4 fun();//报错 var fun=function(){ console.log('新垣结衣结婚了啊'); }
JS引擎运行代码分为两步:预解析、执行代码
- 预解析:JS引擎会把js里面所有var还有function提升到当前作用域的最前面
- 代码执行:按照代码书写顺序执行
预解析案例分析:案例1:
//案例1 var num=10; function fn(){ var num=30; console.log(num); } fn();//输出30 //JS引擎执行顺序如下 var num; function fn(){ var num=30; console.log(num); } num=10; fn();
案例2:
//案例2 var num=10; function fn(){ console.log(num); var num=20; console.log(num); } fn();//输出undefined和20 //JS引擎执行顺序如下 var num; function fn(){ var num; console.log(num); num=20; console.log(num); } num=10; fn();
案例3:
//案例3 fn(); console.log(c); console.log(b); console.log(a); function fn(){ var a=b=c=9;//相当于var a=9;b=9;c=9; b和c相当于全局变量 console.log(a); console.log(b); console.log(c); } //输出5个9,第六行报错
标签:11,function,console,log,JS,num,var,重拾,fn 来源: https://blog.csdn.net/lhe_foolishpig/article/details/117286106