首页 > 编程语言 >你不知道的Javascript 上 1作用域是什么 1.1编译原理

你不知道的Javascript 上 1作用域是什么 1.1编译原理

时间:2022-12-11 19:33:06浏览次数:56  
标签:语法 1.1 作用域 text Javascript 词法 编译 分词 单元

什么是编译

程序中一段源代码经过parse(解析)、transform(转换)、generate(生成) 三个阶段,这三个阶段统称为编译

编译过程详解

分词/词法分析 解析

1 分词:Tokenizing

分词是对代码进行有规律的切分,例如一下

//会被切分为 var、 a、 = 、 2  
var a  =  2;

会将代码根预设定的语法判断进行不同的切割,这些被切割下来的单元就是词法单元

2 词法分析:Lexing

词法分析与分词存在一定差异,主要差异在于可以对单元进行状态的判断
例如 a 属于独立的一个词法单元,或与一个完整的词法单元存在被包含的关系,则判定为归属关系,调用的是有状态的解析规则

解析/语法分析(Parsing)转换

》这个过程是将词法单元流(数组)转换为一个由元素逐级嵌套所组成的代表了程序语法结构的树。这个树被称为“抽象语法树”
(Abstract Syntax Tree,AsT).

类似下面这个结构

//模板生成
/* 
<username name="123" id=3>
 账号:土豆丝
</username>
<password name="777" id =4>
 密码:potato
 <p>请勿填写非法字符</p>
</password>
*/
{
username:{
name: "123",
id:3
text:"账号:土豆丝"

}
password:{
name:"777"
id:4
text:“密码:potato”
p:{
 text:"请勿填写非法字符"
}
}
}

以上 是一个模板生成的抽象语法树,我们可以一个元素通过转换为类数组对象(抽象语法树 ast),将他进行相互转换

代码生成 生成(generator)

将ast转化 为可执行代码被称为生成

在React 中我们使用


import React from "react";
ReactDOM.render(
<login/>
)

对其从AST抽象语法树重新转换成元素标签进行渲染
vue和react都具备render函数的实现

标签:语法,1.1,作用域,text,Javascript,词法,编译,分词,单元
From: https://www.cnblogs.com/czh0316/p/16974169.html

相关文章

  • JavaScript笔记 - 防抖与节流
    防抖与节流目录防抖与节流1.防抖2.节流在进行窗口操作或者输入框操作时,如果事件处理函数触发频率过高,会加重浏览器和服务器的负担。此时可以使用防抖和节流的方式来减......
  • GEN8-ARPL安装DSM7.1.1
        做个记录,之前运行的7.1.1-42962挺稳定。因为之前用的ARPL-V0.4alpha6版本安装的DSM,最高支持到7.1.1-42962,有两个更新版本不能安装,又因为网络问题ARPL的自动更新......
  • Javascript的预解析机制
    JS的预解析机制想要理解js的解析机制,不妨先了解两个概念:变量声明提升与函数声明提升。声明提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。变量......
  • javascript-代码随想录训练营day25
    216.组合总和Ⅲ题目链接:https://leetcode.cn/problems/combination-sum-iii/题目描述:找出所有相加之和为n的k个数的组合,且满足下列条件:只使用数字1到9每个数字......
  • JavaScript奇淫技巧:隐写术
    JavaScript奇淫技巧:隐写术本文将用JavaScript实现“图片隐写术”。什么是隐写术?将文本或其它数据写入图片的技术,称为“隐写术”。比如下面这张图中,便隐藏着秘密信息,虽然看起......
  • notepad++8.1.1背景颜色设置护眼色
    Notepad++是免费软件,可以免费使用,自带中文,支持众多计算机程序语言: C,C++,Java,pascal,C#,XML,SQL,Ada,HTML,PHP,ASP, AutoIt, 汇编, DOS批处理,Caml, COBOL, Cmake......
  • JavaScript:this指针
    this指针,存储的是一个内存地址,如同变量一样,指向一块内存区域;而这个内存区域,保存的就是一个对象的数据,那么这个对象是什么呢?通常来说,this指针,主要是用在方法(函数)中,用来指......
  • 深入解析 JavaScript 中 apply 方法原理
    前言大家好,我是 CoderBin,在面试当中,手撕代码的场景屡见不鲜,手写JS当中的方法更是最常见的一种,所以本文将全面的,详细解析​​apply​​方法的实现原理,并手写出自己的​​a......
  • 前端开发系列023-基础篇之JavaScript和JSON(扩展)
    title:'前端开发系列023-基础篇之JavaScript和JSON(扩展)'tags:-javaScript系列categories:[]date:2017-06-2008:20:13本文输出JSON搜索和JSON转换相关的内容......
  • 前端开发系列022-基础篇之JavaScript和JSON(进阶)
    title:'前端开发系列022-基础篇之JavaScript和JSON(进阶)'tags:-javaScript系列categories:[]date:2017-06-1908:20:13在[javaScript和JSON](http://wendingd......