Javascript 进阶 2-1 JavaScript 是如何运行的

直译语言(Interpreted Language)

javascript就是直译式语言,会直接透过直译器,将代码生成出来,才在运行环境执行。并且如果有错误的状况会直接在运行环境作回馈。

而直译式语言的优点就是不需要预先订义型别,并且弹性较高。

http://img2.58codes.com/2024/20121770OWp0VmKYjT.png

而跟直译式语言相对的就是,编译式语言。

编译式语言在送到执行环境之前,会进行一段编译的过程,这时候如果有错的话,就会在编译的过程中出现错误回馈。

这就是编译式语言的好处,另外同时编译式语言大部分的效能都会稍微好一些。

http://img2.58codes.com/2024/20121770Zom8FQVpDo.png

Javascript 直译器转换过程

语法基本单元化(Tokenizing)抽象结构树 AST(Abstract Syntax Tree)代码生成

语法基本单元化(Tokenizing)

语法基本单元化就是将特定的变数宣告进行字串的拆解

例如

var ji = '吉';

上述的变数定义,对直议器来说并不会知道 var 是变数的宣告方式,ji 是变数名称。

在这个步骤就是依序分解成不同的物件区块(Token),并且给予不同的 Token 不同的识别名称。

http://img2.58codes.com/2024/20121770maQpbaaiZI.png

抽象结构树 AST(Abstract Syntax Tree)

抽象结构树会依照刚刚的 Token 的结果产生类似 JSON 格式的阶层列表出来

http://img2.58codes.com/2024/20121770PWxcmovmN5.png

可以看到kind的地方则是宣告变数的方式

并且可以发现是一个 VariableDeclaration 的动作

但到这个部分都还没有真正运行,要到特定的环境才会运行(chrome或是Node.js)

另外可以注意的地方是,如果没有用 var let const 这些宣告变数的宣告词,则 AST 就不会是 VariableDeclaration。

而是 AssignmentExpression

http://img2.58codes.com/2024/20121770gT3ptAuyhg.png

好~之后就是代码生成,并且将代码丢到运行环境进行运行噜~!

今天的笔记就到这边 ~! 汪汪

线上工具 Esprima : https://esprima.org/demo/parse.html#


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章