2022/9/4
js预解析
分为变量预解析 和 函数预解析
就是js引擎在执行的时候 先把var 和function提到当前作用域的前面,再按照顺序执行代码。
eg 1 变量预解析
console.log(num);
var num=1; 是undefined 因为相当于执行了代码:
var num;
console.log(num); 当然是undefined
num=1;
变量预解析是只提声明 不提赋值
eg 2 函数预解析
fun();
var fun=function(){
consolo.log (1);
}
会把var fun 提到前面,相当于执行了代码:
var fun;
fun(); 当然是出错的
fun=function(){
consolo.log (1);
}
但是对于
fun();
function fun() {
consolo.log (1);
}
这个是函数的字面量进行声明的 没有进行赋值 直接提升所有的,相当于执行代码
function fun() {
consolo.log (1);
}
fun();这里自然是有值的