美文网首页
从编译代码 到 执行代码 发生的一系列事情

从编译代码 到 执行代码 发生的一系列事情

作者: name_howe | 来源:发表于2019-12-09 14:21 被阅读0次

引擎:大哥 负责从始至终的编译和执行我们的 JavaScript 程序。
编译器:小弟 处理所有的解析和代码生成的重活儿。
作用域:小弟 收集并维护一张所有被声明的标识符(变量)的列表,并对当前执行中的代码如何访问这些变量强制实施一组严格的规则。

var a = 1;为例子
一、在一段js代码被引擎大哥执行的前一刻,引擎大哥会让小弟编译器进行一个编译(编译器编译的三个步骤):
第一步:分词/词法分析——将var a = 1;分开成对语言本身有意义的片段var a = 1 ;
第二部:解析——将这个有意义的片段var a = 1 ;,解析成一个抽象语法树,它综合地表示了程序的语法结构;
第三步:代码生成——首先在抽象语法树里发现var a,并去作用域里查看是否存在a这个变量,如果存在 则跳过,否则就会让作用域声明个名字为a的变量。然后生成稍后要执行的代码,来处理a = 1
二、引擎大哥运行到代码var a = 1;时,首先让 小弟作用域 去查看在当前的作用域集合中是否有一个称为 a 的变量可以访问。如果有,引擎就使用这个变量进行赋值操作a = 1。如果没有,引擎就会到其他地方查看,如果最终没有找到a变量,引擎 将会举起它的手并喊出一个错误!

总结来说:对于一个变量赋值 var a = 1;,发生了两个不同的动作:第一,代码执行前一刻,编译器声明一个变量var a(如果先前没有在当前作用域中声明过),第二,代码执行时,引擎 在 当前的作用域集合中 查询这个变量 a并给它赋值a = 1,如果找到的话。

相关文章

  • 从编译代码 到 执行代码 发生的一系列事情

    引擎:大哥 负责从始至终的编译和执行我们的 JavaScript 程序。编译器:小弟 处理所有的解析和代码生成的重...

  • 《你不知道的JS上》笔记

    JS是编译型语言 编译发生在代码执行前几微秒,简单来说就是js在执行前要进行编译,编译过程发生在代码执行前几微妙,...

  • 1.作用域入门

    从最简单的例子开始 想要执行代码,必须要先要进行编译。JavaScript的编译过程很短,就在执行代码之前。 编译...

  • 虚拟机字节码引擎

    代码编译的结果就是从本地机器码变为字节码 执行引擎在执行java代码可以解释执行(通过解释器执行)也可以编译执行(...

  • Other Linker Flags

    前言 一个程序从代码到执行文件需要经历如下几个阶段:源代码->预处理->编译->汇编->机器码->链接->可执行文...

  • iOS-framework的补充

    编译过程: 从C代码到可执行文件经历的步骤是:源代码 > 预处理器 > 编译器 > 汇编器 > 机器码 > 链接器...

  • App的Run过程

    点击 Run 之后 App 进行编译、汇编、链接、代码签名以及启动执行等操 编译 编译主要依靠编译器来完成一系列的...

  • Wasmtime之源码编译流程

    编译Wasmtime 下载代码,进入代码目录wasmtime执行: 2)编译CLI bin文件执行: 可执行文件位...

  • 不知道的 JavaScript 之作用域、词法作用域、闭包

    1. 编译 JS 任何代码在执行前都要编译,编译通常发生在执行前几微秒,尽管一般将 js 归为“解释执行”的语言,...

  • Java代码编译和执行过程

    Java代码编译和执行过程 Java代码的编译和执行的整个过程大概是:开发人员编写Java代码(.java文件),...

网友评论

      本文标题:从编译代码 到 执行代码 发生的一系列事情

      本文链接:https://www.haomeiwen.com/subject/knpmgctx.html