一起来了解一下JavaScript的预编译(小结)
网络编程 2021-07-04 14:07www.168986.cn编程入门
这篇文章主要介绍了一起来了解一下JavaScript的预编译(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化随着长沙网络推广来一起学习学习吧
JS运行三部曲
js运行代码共分三步
- 语法分析
- 预编译
- 解释执行
JavaScript代码在运行时,会进行语法分析,通篇检查代码是否存在低级错误,然后进行预编译,整理内部的一个逻辑,再开始一行一行的执行代码
语法分析
代码在执行之前,系统会通篇扫描一遍,检查代码有没有低级的语法错误,比如少写个大括号。
预编译
预编译前奏
预编译发生在函数执行的前一刻。变量未经声明就赋值,此变量为全局对象所有
a = 3
var b = c = 4
一切声明的全局变量,全是window的属性
var a = 1 ===> window.a = 1
预编译四部曲
- 创建AO(Activation Object)对象(里面存储的是函数内部的局部变量)
- 找形参和变量声明,将变量和形参名做为AO属性名,值为undefined
- 将实参和形参统一
- 在函数体里面找函数声明,值赋予函数体
用一个例子来说明一下,也可以自己先给出一个答案,再继续往下看
function fn(a) { console.log(a); var a = 123; console.log(a); function a() {} console.log(a); var b = function() {}; console.log(b); function d() {} console.log(d) } fn(1);
第一步,创建AO(Activation Object)对象 {}第二步,找形参和变量声明,将变量和形参名做为AO属性名,值为undefined
{ a: undefined, b: undefined, }
第三步,将实参和形参统一
{ a: 1, b: undefined, }
第四步,找函数声明,值赋予函数体
{ a: function a() {}, b: undefined, d: function d() {} }
所以在函数fn执行的前一刻,a、b、d的值如上所示
所以fn(1)执行的结果为
// ƒ a() {}
// 123
// 123
// ƒ () {}
// ƒ d() {}
在全局作用域里,预编译过程有些许不同
- 创建GO(Global Object)对象(里面存储的是函数内部的全局变量)GO === window
- 找形参和变量声明,将变量和形参名做为GO属性名,值为undefined
- 在函数体里面找函数声明,值赋予函数体
解释执行
一行一行的执行代码
实践题
这里有几个例题,有兴趣的可以看一下
function test(a, b) { console.log(a); console.log(b); var b = 234; console.log(b); a = 123; console.log(a); function a() {} var a; b = 234; var b = function() {}; console.log(a); console.log(b); } test(1);
global = 100; function fn() { console.log(global); global = 200; console.log(global); var global = 300; } fn(); var global;
function test() { console.log(b); if (a) { var b = 100; } c = 234; console.log(c); } var a; test(); a = 10; console.log(c);
多数情况下,我们都是采用狼蚁网站SEO优化的这种方式来处理预编译的一个过程
- 函数声明,整体提升
- 变量声明,声明提升
若是遇见复杂的情况就只能采用最原始的方式来解决问题了
到此这篇关于一起来了解一下JavaScript的预编译(小结)的文章就介绍到这了,更多相关JavaScript 预编译内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南