js解析机制分析

今天在慕课刷了js进阶的课程,记录下心得。

js的解析机制,主要要掌握的内容是他的预解析机制

一、首先看一下下面的代码

console.log(a);
var a=1;

这一段代码输出的结构是undefined。

预解析:

//首先是搜寻代码中的var

a=undefined;//将undefined赋值给var定义的所有变量


然后就是逐句解析代码,第一句

console.log(a);

由于预解析中a=undefined,所以这里输出的即是undefined

然后才到给a赋值的部分,

若我们在之后再加一个console.log(a);

便能的到输出1


二、函数的预解析

function fn() {
    console.log(a);
    a=2;
}
fn();
console.log(a);
var a=1;
console.log(a);
第一步还是预解析:

a=undefined;

如果代码中有函数,首先就把函数整个拉进预解析

function fn(){console.log(a);a=2};

预解析结束,开始读取代码

首先是函数,由于在预解析时已经声明过了,所以跳过。

调用函数,第一行由于a=undefined,打印

在函数中没有var,直接给a赋值2,是一个全局的,打印

下面才到正式的声明var a=1;

打印



总结了一下:

预解析机制主要就是将所有var找到,给所以变量赋值undefined,函数则原样调用,如果两个函数重复使用了一个函数名则预解析最后一个函数。若var定义的变量和函数名冲突,则留下函数。

你可能感兴趣的:(javascript,前端,javascript,前端)