扣丁学堂HTML5培训分享javascript预编译过程

ITxuexi_66 · · 1626 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

什么是预编译?对javascript预编译过程有多少的小伙伴知道或者是了解呢?本篇文章扣丁学堂HTML5培训小编就给读者们分享一下javascript预编译过程,感兴趣的小伙伴就随小编来了解一下吧。 当js代码执行时有三个步骤: 1.语法分析,这个过程检查出基本的语法错误。 2,预编译,为对象分配空间。 3,解释执行,解释一行执行一行,一旦出错立即停止执行。 预编译发生在代码执行的前一刻。 预编译的具体过程: 预编的时候会生成AO(ActivetionObject,执行期上下文)和GO(GlobalObject,等于window) 【注1】先生成GO,生成后会逐行执行代码,遇到某个函数要执行时,在执行前的前一刻会预编译这个函数,生成AO。 换言之,AO用于全局中的某个具体函数,而GO用于整个全局,详情请看下面例子: 运行结果如下: GO创建过程: 1.首先创建GO对象。 GO{} 2.在全局中寻找变量声明作为GO的属性,并将undefined赋给它。 GO{ b:undefined; } 3.在全局中寻找函数声明(【注2】注意不是变量赋值)作为GO属性,并将函数体赋值于它。 GO{ b:function{...};(此时第二步中的b已被覆盖成为functionb); } 然后开始逐行执行代码,遇到第一个console.log(b);打印的是GO中的b; AO创建过程: 第一次打印完b后,代码执行到然后开始创建AO,其创建过程和GO相似只是多了一步实参形参相统一而已。 1.创建AO对象。 AO{} 2.在相应函数中寻找形参和变量声明作为执行期上下文的属性,并将undefined赋给它们。 AO{ b:undefined;(这个b是变量b,此函数没有形参) } 3.实参形参相统一。 4.寻找函数声明作为它的属性,并将函数体赋给它。 AO{ b:function{...};(函数b将变量b覆盖) } 开始执行函数b,第二个console.log(b)结果为function(){}, 执行AO中b的值被赋成10,执行第三个console.log(b)结果为10. 想要了解更多关于HTML5开发方面内容的小伙伴,请关注扣丁学堂HTML5培训官网、微信等平台,扣丁学堂IT职业在线学习教育有专业的HTML5讲师为您指导,此外扣丁学堂老师精心推出的HTML5视频教程定能让你快速掌握HTML5从入门到精通开发实战技能。 H5基础课程:https://ke.qq.com/course/320523?flowToken=1008606【扫码进入HTML5前端开发VIP免费公开课】

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1626 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传