js中立即执行函数会预编译吗_JavaScript预编译过程

什么是预编译?

当js代码执行时有三个步骤:

1.语法分析,这个过程检查出基本的语法错误。

2,预编译,为对象分配空间。

3,解释执行,解释一行执行一行,一旦出错立即停止执行。

预编译发生在代码执行的前一刻。

预编译的具体过程:

预编的时候会生成AO (Activetion Object,执行期上下文)和GO (Global Object,等于window)

【注1】先生成GO,生成后会逐行执行代码,遇到某个函数要执行时,在执行前的前一刻会预编译这个函数,生成AO,

换言之,AO用于全局中的某个具体函数,而GO用于整个全局,详情请看下面例子:

运行结果如下:

GO创建过程:

1.首先创建GO对象。

GO{}

2.在全局中寻找变量声明作为GO的属性,并将undefined赋给它。

GO{

b:undefined;

}

3.在全局中寻找函数声明(【注2】注意不是变量赋值)作为GO属性,并将函数体赋值于它。

GO{

b:function{...};(此时第二步中的b已被覆盖成为function b);

}

然后开始逐行执行代码,遇到第一个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.

fd857dc01a88b66be70b498b05790671.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识图谱火了,但你知道它的发展历史吗?|赠书5本

作者:尼克 编辑|Emily版式由AI前线整理知识图谱火了,但你知道它的发展历史吗?本文节选自《人工智能简史》第 3 章,从第一个专家系统 DENDRAL 到语义网再到谷歌的开源知识图谱,对知识图谱的发展历程进行了…

英特尔爆发史诗级芯片漏洞,Linux之父痛斥英特尔公司

来源:CEO来信概要:1月4日消息,英特尔处理器存在芯片级漏洞的消息仍在发酵,恐怕将会成为计算机行业发展史上最大的安全漏洞之一。1月4日消息,英特尔处理器存在芯片级漏洞的消息仍在发酵,恐怕将会成为计算机行…

曲线均匀分布_曲线篇:深刻理解B 样条曲线(下)

前两篇中讲解了贝塞尔曲线和B样条基础。FrancisZhao:曲线篇: 贝塞尔曲线​zhuanlan.zhihu.comFrancisZhao:曲线篇:深刻理解B 样条曲线(上)​zhuanlan.zhihu.com本文讲一下B样条的进阶clamped B样条由于我们常用的B样条…

JSON.parse()解析单引号错误的问题

1、当用JSON.parse()方法,解析从后台传来的json字符串,而且字符串中含有单引号(如Iam ....),页面将出现如下异常 2、页面引起报错部分 3、解决办法:在后台将特殊字符转义 bookBlockVoListJSONString BaseStringUtils.getJsonFor…

Facebook人工智能实验室提出「全景分割」,实现实例分割和语义分割的统一

原文来源:arxiv作者:Alexander Kirillov、Kaiming He1、Ross Girshick、Carsten Rother、Piotr Dollar「雷克世界」编译:嗯~阿童木呀、KABUDA现如今,我们提出并研究了一种新的“全景分割”(Panoramic segmentation&…

art.dialog弹出框后再根据其内部iframe的大小调整大小

1、主页面,用来弹出弹出页面 //查看错误小练习$.exerciseClick function(rowId ){$.event.get().preventDefault();var tdScore $("#" rowId).find("[aria-describedbyhomeworkStudentListGrid_score]");if( parseInt(tdScore.html()) 100 …

句子录音打分代码参考

1、页面名称:sentenceReadRecordDialogAnyone.jsp 2、页面效果 3、页面源码 <% page language"java" pageEncoding"UTF-8" contentType"text/html;charsetUTF-8"%> <% include file"/common/taglibs.jsp"%><script la…

工具用途_见微知著,小工具大用途!

为什么同一个饮品&#xff0c;店家做的尝起来如此美味。拿到配方后自己做的不是甜了就是酸了呢&#xff1f;相信很多朋友都有这种疑惑。但真相往往就会在不经意间被忽视&#xff0c;很多初学者并没有老师傅那样的熟练手感&#xff0c;可以做到信手拈来的程度。当没有那些量勺&a…

带暂停功能的音频播放代码参考

1、页面来源&#xff1a;sentenceExercise07.jsp 2、页面效果 3、源代码 <% page language"java" pageEncoding"UTF-8" contentType"text/html;charsetUTF-8"%> <% include file"/common/taglibs.jsp"%> <% include f…

Yann LeCun 怒喷 Sophia:这就是彻头彻尾的骗局

来源&#xff1a;雷锋网&#xff08;leiphone-sz&#xff09;作者&#xff1a;杨晓凡在各种机器学习方法火热、神经网络加速芯片和生成式模型火热、研究人员们常常为优秀论文拍案叫绝的 2017 年中&#xff0c;普通大众视野中的热门人工智能成果除了 AlphaGo&#xff0c;还有一件…

ad16自动布线设置规则_AD16快捷方式和常规设置

1.快捷方式:快速修改丝印位置。选中元件 按快捷键A然后按P。Ti &#xff1a;差分等长TR &#xff1a;蛇形走线MG &#xff1a;修改铜皮多根走线(选中要走的几根线 按快捷键TTM 几根可以同时走线。PM)调整元件坐标移动(选中元件 按一下M 选择通过X、Y移动选择。)shiftG&#xff…

麦肯锡报告:传统车企正面临出行的数字化颠覆

来源&#xff1a;车云未来的个人出行情景将迎来一个巨大转变&#xff0c;更加倾向于颠覆性科技和其创新商业模式。毫无疑问&#xff0c;汽车产业正在面临颠覆。消费者行为上的巨大变化正在改变汽车行业的现状&#xff0c;尤其是因为人们更加注重了所有的车内体验&#xff0c;而…

win10触屏输入法_触摸屏笔记本Win10电脑的校准技巧

Microsoft的Surface系列设备旨在优化Windows 10触摸和笔输入功能。 但是&#xff0c;经过一段时间后&#xff0c;输入精度会下降。 此外&#xff0c;还有许多其他触摸式二合一笔记本电脑和来自其他厂商的混合设备。 并不是所有这些都在出厂时具有最佳的触摸输入精度校准。 这导…

大牛预测2018年深度学习走向:大批AI硬件初创将失败

来源&#xff1a;智东西导语&#xff1a;本文作者Carlos E. Perez是Intuition Machine公司的创始人&#xff0c;曾经编写《人工直觉与深度学习手册》&#xff08; Artificial Intuition and the Deep Learning Playbook&#xff09;&#xff0c;他将会在2018年3月1日至2日在阿姆…

QueryPage使用示例

1、通过关联的表的某字段查询和排序 表的关系 代码 /*** * <p>Description&#xff1a;查找作业记录</p>* <p>Paramenter&#xff1a;</p>* <p>Return&#xff1a;</p>* <p>Exception&#xff1a;</p>* <p>Modified Hi…

alientek 3.5寸tftlcd模块资料_电冰箱触摸屏提高设备档次,深圳3.5寸人机界面厂家...

随着互联网的发展加上触摸屏显示器的贴合在一块&#xff0c;现在我们家电越来越智能化&#xff0c;比如现在比较流行的家电冰箱触摸屏&#xff0c;可以在手机上通过触摸屏来对冰箱进行选项设置。电脑冰箱控制系统包括金玺触摸屏、显示控制板、电磁阀、温度传感器以及导线。主控…

推荐|5种商业AI产品的技术架构设计!

来源&#xff1a; 达观数据概要&#xff1a;今天我们就特别推荐达观数据的几个商业产品设计技术架构&#xff0c;希望对于广大技术有帮助。做任何一个商业产品设计&#xff0c;技术架构都是首先要考虑的&#xff0c;特别是面对海量数据的AI商业项目更是如此。今天我们就特别推荐…

多个iframe同时加载并动态调整大小

动态调整iframe高度的函数 function dyniframesize(ifm) {var pTar null; if (document.getElementById){ pTar document.getElementById(ifm); }else{ eval(pTar ifm ;); }$(pTar).parent().css("visibility", "hidden");if (pTar && pTar.…

没有数据也能翻译?一文读懂「无监督」机器翻译

原文来源&#xff1a;buZZrobot作者&#xff1a;Harshvardhan Gupta「雷克世界」编译&#xff1a;KABUDA、嗯~阿童木呀深度学习正在被广泛地运用于各项日常任务当中&#xff0c;尤其是涉及到一定程度“ 人性化”的领域&#xff0c;例如&#xff0c;图像识别。与其他机器学习算法…

可输入过滤和直接选择的select控件

代码&#xff1a; <% page language"java" pageEncoding"UTF-8" contentType"text/html;charsetUTF-8"%> <% include file"/common/taglibs.jsp"%><script language"javascript" type"text/javascript&…