本文主要对JS中预解析进行简单的解释说明。
js引擎运行js分为两步:预解析、代码执行。
预解析:
通俗来说预解析就是将变量的声明(var),提前到当前所在的作用域的最上面;将函数的声明(function)提前到当前所在域的最上面。
下面举两个例子简单演示一下:
关于变量:
//1:
var num = 10;
console.log(num); // 输出10
//2:
console.log(num1);
var num1 = 20; //undefined
//预解析:将上述代码转化为如下所示代码:
//1:
var num;
num = 10;
console.log(num);
//2:
var num1;
console.log(num1);
num1 = 20;
//所以第一个正常输出、第二个输出undefined。
关于函数:
var num = 10;
function fun() {
console.log(num);//undefined
var num = 20;
}
fun();
//函数调用的时候,会把函数的声明提到当前所在域的最上面。
var num;
function fun() {
var num;
console.log(num);//undefined
num = 20;
}
num = 10;
fun();//调用
以上就是对预解析的简单回答,仅供参考,欢迎指正!