Javascript解析机制 执行机制

HTML5学堂:在学习JavaScript过程中,我们需要了解事件的机制是怎么执行的?本文将会提到JavaScript事件机制的解析,希望对大家有帮助!

javascript解析的过程主要分为两个阶段,分别是编译与执行阶段。

在编译期,javascript解释器将完成对javascript代码的预处理,即将javascript代码转换为字节码。

在执行期,javascript解释器借助执行期环境将字节码生成机械码,并按照顺序执行,完成程序设计的任务。

上图为编译器的基本构成以及工作流程。对于javascript语言,首先会通过词法分析和语法分析,并建立语法树,到此时,开始解释执行,即并不是完全生成字节码之后再调用虚拟机来执行编译好的字节码。

javascript的预编译对执行顺序有很大的影响:

在预编译期,javascript会对所有声明的变量和函数进行处理。因此在执行如下代码时并不会报错

alert(a);
var a = 1;
alert(a);

在上面这段代码中,当js进行预编译时,会执行 var a;然后再进行执行,因此第一个是undefined,而第二个弹出的内容为1。 同理,看如下代码

f();
function f(){
    alert(1);
}

在上面这段代码中,当js进行预编译时,会执行 var a;然后再进行执行,因此第一个是undefined,而第二个弹出的内容为1。 同理,看如下代码

f();
var f=function (){
    alert(1);
}

会出现报错。这是因为,当将定义的函数作为值赋给变量f,在编译器时只能够将“声明变量f”进行处理,而对于f的值,只有到执行期时才能按照顺序进行赋值(自然会出现语法错误了,会提示无法找到对象f)

javascript的代码执行:

按照块执行javascript代码

浏览器解析HTML文档流时,如果遇到一个<script>标签,则js会等到这个代码块都加载完毕之后,先进行编译,然后再执行。执行完毕之后,才继续解析下面的HTML文档流。虽然javascript是按照块来执行的,但是不同的块(<script></script>)属于同一个全局作用域。换句话说,块之间的变量和函数是可以共享的。

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2016-01-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【编程基础】聊聊C语言-兵马未动粮草先行(2)

上一篇我们讲了C语言预处理阶段的宏定义,知道了C语言中宏定义的处理和使用。现将上篇关于宏的问题的答案公布如下: 用宏定义一个字符串常量 #define str ...

3054
来自专栏编程微刊

如何把传统写法改成框架形式 es6http://www.expressjs.com.cn/

1782
来自专栏电光石火

Linux Shell 基本语法

一. Linux基本命令 1.1.  cp命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,功能十分强大。 语法: cp [选项...

2377
来自专栏加米谷大数据

技术分享 | Centos下 Vim快捷键操作命令大全

Vim是一个超牛的编辑器,命令功能十分强大 。而且这些命令大都可以进行组合 , 比如,9yy命令表示复制9行内容,9表示要复制的行数,同样100dd表示删除10...

35810
来自专栏MasiMaro 的技术博文

为什么C语言会有头文件

前段时间一个刚转到C语言的同事问我,为什么C会多一个头文件,而不是像Java和Python那样所有的代码都在源文件中。我当时回答的是C是静态语言很多东西都是需要...

1815
来自专栏知识分享

16-GPRS(Air202)关于多个文件中的变量调用和定时器

大家有没有看这篇 https://www.cnblogs.com/yangfengwu/p/8965054.html

852
来自专栏鬼谷君

Linux三剑客之sed

1032
来自专栏腾讯NEXT学位

Express进阶:从一个例子看路由分组机制

2785
来自专栏深度学习之tensorflow实战篇

pycharm 或者其他Python IDE不支持中文编码的解决方案

Python的自带编辑器IDLE或者Python Shell在默认情况下都不支持中文编码,若在脚本程序中出现中文,则会出现一定的错误。 原因: 因为Python...

2944
来自专栏大内老A

.NET Core的文件系统[3]:由PhysicalFileProvider构建的物理文件系统

ASP.NET Core应用中使用得最多的还是具体的物理文件,比如配置文件、View文件以及网页上的静态文件,物理文件系统的抽象通过PhysicalFilePr...

2049

扫码关注云+社区