上一篇我们说到了作用域跟作用域,这篇说说js的预解析
预解析:在当前作用域下,js运行之前,会把带有var和function关键字声明的变量先声明,并在内存中安排好。然后从上至下解析js语句。而且function的声明优先于var声明。
不多说,,直接上代码
正规写法:
var num=10; fun(); function fun(){ console.log(num);//undefined
var num=20; }
预解析里:先将变量和函数提前,如下:
var num; function fun(){ var num; console.log(num);//undefined num=20; } num=10; fun();
第二种
var num=10; function dn(){ console.log(num);//undefined var num=20; console.log(num);//20 } dn(); //相当于以下代码 var num; function dn(){ var num; console.log(num); num =20; console.log(num ); } num=10; dn();
第三种
var a =18; ss(); function ss(){ var b=9; console.log(a);//undefined console.log(b);//9 var a='123'; } //相当于以下代码 var a; function ss(){ var b; var a; b=9; console.log(a); console.log(b); a='123'; } a=18; ss();
第四种
aa(); console.log(c1);//9 console.log(b1);//9 console.log(a1);//报错 function aa(){ var a1=b1=c1=9; console.log(a1);//9 console.log(b1);//9 console.log(c1);//9 } //相当于 function aa(){ var a1=b1=c1=9;//相当于 var a=9;b=9,c=9 var a1; a1=b1=c1=9; console.log(a1); console.log(b1); console.log(c1) } aa(); console.log(c1); console.log(b1); console.log(a1);
JS预解析深入解析
本文详细探讨了JavaScript的预解析机制,包括变量和函数声明的提升过程,以及四种不同情况下的预解析行为示例,帮助读者理解JS代码的执行顺序。
650

被折叠的 条评论
为什么被折叠?



