浏览器解析JavaScript的原理
2020-12-13 05:06
标签:自己 没有 语法错误 词法分析 htm 参数 过程 var -- JavaScript的特点一般都知道的就是解释执行,逐行执行,就是从上到下依次执行。 JavaScript的执行之前,其实还是有一些操作的,只是没有表现出来 JavaScript的执行过程: 1、语法检测 首先是大致查看有没有基本的语法错误。比如说中文、关键字错误等等 2、词法分析(预编译) 3、逐行执行 预编译的过程 1、先全局 直接是 script 标签里的代码,函数除外 预编译时 1、先模拟一个GO(global object) = { }; 2、分析变量声明(var) 若有则:GO = {变量名1:undefined,变量名2:undefined,……};若遇到同名的就覆盖 3、分析函数声明(function) 若有则:GO = {变量名1:undefined,变量名2:undefined,……,函数名1:函数体1,函数名2:函数体2,……};若遇到同名的就覆盖 4、逐行执行 有赋值就赋值到GO里相应的属性 2、再局部 在逐行执行时 若遇到函数调用,该函数会生成自己的作用域AO(active object) = { } 1、模拟一个AO = { } 2、分析参数 若有则:AO = {形参 1: 实参1,形参 2: 实参2,…… } 3、分析变量声明 若有则:AO = {形参 1: 实参1,形参 2: 实参2,…… 变量名1:undefined,变量名2:undefined,……};若遇到同名的就跳过 4、分析函数声明 若有则:AO = {形参 1: 实参1,形参 2: 实参2,…… 变量名1:undefined,变量名2:undefined,……,函数名1:函数体1,函数名2:函数体2,……};若遇到同名的就覆盖 5、逐行执行 有赋值就赋值到AO相应的属性,若遇到AO里没有的要赋值的,就向上一级找,一直找到GO,若GO没有,就添加到GO。 基础步骤就是这,一步一步的来,就没有什么大问题。 突然想到这个问题,然后找了一下,觉得介绍的比较通俗易懂----------------------------------》传送阵:https://www.cnblogs.com/long-z/p/10136657.html 浏览器解析JavaScript的原理 标签:自己 没有 语法错误 词法分析 htm 参数 过程 var -- 原文地址:https://www.cnblogs.com/jockr/p/11131071.html