学习笔记一:JavaScript编译与执行

本文介绍了JavaScript的编译和执行过程,包括分词、解析、代码生成以及执行原理,如作用域查询、LHS和RHS查询。通过例子阐述了JavaScript引擎如何将代码转化为可执行的机器指令,并解释了在执行过程中可能出现的异常情况。
摘要由CSDN通过智能技术生成

前言:JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。代码是无法直接运行的,需要通过JavaScript编译器对其进行编译,只有编译后的代码才可以被识别,然后通过JavaScript引擎执行代码逻辑。

举例:

var a = 2;

一、编译

1.分词:

分词的目的是将这些代码分解为一个个有意义的代码块,这些代码块称为词法单元。

var a = 2;   // 将被分解为'var、a、=、2、;'这些词法单元组成了一个词法单元流数组
// 词法分析后的结果
       [
      "var" : "keyword",
      "a" : "identifier",
      "=" : "assignment",
      "2" : "integer",
      ";" : "eos" (end of statement)
    ]

2.解析:

对刚才分词得到的一个个代码块进行解析,生产一个抽象的语法树;

(抽象语法树(Abstract Syntax Tree, AST)把词法单元流数组转换成一个由元素逐级嵌套所组成的代表程序语法结构的树。)

Program body[1]:{           // 代表代码是一个程序
    Variable Declaration:{    // 变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值