JS 的基本介绍
JS 主要为web增加了交互体验。用户输入、客户端计算、生成HTML内容,检测浏览器等等。
JS基本语法:
浏览器渲染进程:
进程与线程的区别:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。进程——资源分配的最小单位,线程——程序执行的最小单位。一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
GUI进程:GUI就是用户与计算机之间交互的图形化操作界面,又称为图形用户接口,通过GUI允许用户与Java应用程序或小程序进行交互操作。
JS的特点:
JS线程与GUI线程是互斥的,JS是单进程。
JS语言是动态弱类型语言,动态弱类型语言是指运行时才确定数据类型的语言,变量在使用之前无需申明类型。而静态语言(强类型语言)是编译时变量的数据类型就需要确定的语言,比如String类型,int类型等。
JS数据类型分为复杂数据类型和基础数据类型;
复杂数据类型在赋值时赋值为地址,所以它的原始数据值可以被改变。基础数据类型赋值为值。原始数据值不能被改变。 举例说明:
const company={
name:"Btye"
}//定义一个复杂数据类型
const b=company
b.name='111'
const str='123'
let newstr=str
newstr='321'
console.log(company,b,str,newstr)
输出结果为: {name:'111'} {name:'111'} 123 321 JS 执行流程: 导入源代码后,JS会通过词法分析语法分析生成AST,执行上下文。生成的AST会转换成字节码,逐行解释执行字节码会转换成机器码。(目的是节约内存开销)。
词法分析(Lexical Analysis):将整个代码字符串分割成最小语法单元数组
语法分析(Syntax Analysis):在分词基础上建立分析语法单元之间的关系
执行上下文:当JS引擎解析到可执行代码片段的时候,就会先做一些执行前的准备工作,这个准备工作就是执行上下文(execution context 简称EC),也叫执行环境。执行上下文分为全局执行上下文,函数执行上下文,Eval执行上下文。执行上下文中包含:变量环境、语法环境、This、可执行代码。
AST:AST(Abstract Syntax Tree)是源代码的抽象语法结构树状表现形式。每个节点都能对应到一种java语法,最终一个java文件就是由棵节点树构成。 通过JS Parser解析器可将JavaScript源码转化为抽象语法树(AST)。