JavaScript预编译什么意思

  介绍

这期内容当中小编将会给大家带来有关JavaScript预编译什么意思,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

JS运行三部曲

JS运行代码共分三步

<李>

语法分析

<李>

预编译

<李>

解释执行

JavaScript代码在运行时,首先会进行语法分析,通篇检查代码是否存在低级错误,然后进行预编译,整理内部的一个逻辑,最后再开始一行一行的执行代码

语法分析

代码在执行之前,系统会通篇扫描一遍,检查代码有没有低级的语法错误,比如少写个大括号。

预编译

预编译前奏

预编译发生在函数执行的前一刻。变量未经声明就赋值,此变量为全局对象所有

<代码>=3

<代码> var b=c=4

一切声明的全局变量,全是窗户的属性

<代码> var=1===比;窗口。代码=1

预编译四部曲

<李>

创建AO(激活对象)对象(里面存储的是函数内部的局部变量)

<李>

找形参和变量声明,将变量和形参名做为AO属性名,值为未定义的

<李>

将实参和形参统一

<李>

在函数体里面找函数声明,值赋予函数体

用一个例子来说明一下,也可以自己先给出一个答案,再继续往下看

function  fn (a), {   ,console.log(一个);   ,var  a =, 123;   ,console.log(一个);   ,function  (), {}   ,console.log(一个);   ,var  b =,()函数,{};   ,console.log (b);   ,function  d (), {}   ,console.log (d)   }   fn (1),

第一步,创建AO(激活对象)对象{}第二步,找形参和变量声明,将变量和形参名做为AO属性名,值为未定义

{   ,答:没有定义,   b:大敌;定义,   }

第三步,将实参和形参统一

{   ,答:1,   b:大敌;定义,   }

第四步,找函数声明,值赋予函数体

{   答:大敌;function  (), {},   b:大敌;定义,   d:大敌;function  d (), {}   }

所以在函数fn执行的前一刻,a, b, d的值如上所示

所以fn(1)执行的结果为

//?(){}
//123
123
////?(){}
//?d () {}

在全局作用域里,预编译过程有些许不同

<李>

创建去(全局对象)对象(里面存储的是函数内部的全局变量)===窗口

<李>

找形参和变量声明,将变量和形参名做为走属性名,值为未定义的

<李>

在函数体里面找函数声明,值赋予函数体

解释执行

一行一行的执行代码

实践题

这里有几个例题,有兴趣的可以看一下

function 测试(a, b), {   ,console.log(一个);   ,console.log (b);   ,var  b =, 234;   ,console.log (b);=,a  123;   ,console.log(一个);   ,function  (), {}   ,var ;=,b  234;   ,var  b =,()函数,{};   ,console.log(一个);   ,console.log (b);   }   测试(1); global =, 100;   function  fn (), {   ,console.log(全球);=,global  200;   ,console.log(全球);   ,var  global =, 300;   }   fn ();   var 全球; function 测试(),{   ,console.log (b);   ,if (一),{   var 才能;b =, 100;   ,}=,c  234;   ,console.log (c);   }   var ;   测试();   时间=a  10;   console.log (c);

上述就是小编为大家分享的JavaScript预编译什么意思了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

JavaScript预编译什么意思