首页 > 其他 > 详细

预编译

时间:2020-03-20 19:29:23      阅读:71      评论:0      收藏:0      [点我收藏+]

js特点(单线程,解释性语言)函数声明整体提升,变量  声明提升

js运行三部曲

a:语法分析(js会先去扫描文件是否存在缺失大括号,语法错误)

b:预编译

c:解释执行

1、预编译前奏

a:imply global暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象(window)所有。

b:一切声明的变量,全是window的属性

2、函数体预编译四部曲(预编译发生在函数执行的前一刻)

a:创建AO对象(执行期上下文,函数产生存储的一个库)

b:找形参和变量声明,将变量和形参名作为AO属性名,值为undefined

c:将实参值和形参统一

d:在函数体里面找函数声明作为AO属性名,值赋予函数体

3、全局预编译(GO===window)

a:在代码定义之后执行之前生成GO(Global Object ) 空对象{}

b:查找变量,定义为GO的属性,赋值为undefined;

c:查找函数声明,将函数声明赋值给GO 即 GO[函数名] = 函数;

注:if里面不能声明函数

 1 var x = 1, y = z = 0;
 2 function add(n){
 3      return n = n + 1;
 4 }
 5 y = add(x);
 6 function add(n){
 7      return n = n +3;
 8 }
 9 z = add(x)
10 //x 1,y 4,z 4

 

预编译

原文:https://www.cnblogs.com/yqyf/p/12367827.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!