浏览器解析JavaScript的原理
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
转载于:https://www.cnblogs.com/jockr/p/11131071.html
浏览器解析JavaScript的原理相关推荐
- 浏览器解析JavaScript原理
1.浏览器解析JavaScript原理特点: 1.跨平台 2.弱类型 javascript 定义的时候不需要定义数据类型,数据类型是根据变量值来确定的. var a = 10; 数字类型 ...
- 一图解析JavaScript快速排序原理,看了就不会忘~~
时隔一年(当时是2020.05.02),再看当初写的快排,只能说能排序,但是性能比较差: 1,选取比较元素的时候,没必要浪费两次数学计算去取中间值!也就是这个是没必要的: const middleIn ...
- JavaScript运行原理解析
写在前面的话: 发现使用了那么长时间的Javascript,但是对其运行原理还是不清晰,今天特意总结一下,把大神们的理论和自己的总结都记录到下面: 1. 什么是JavaScript解析引擎? 简单地说 ...
- 前端文摘:深入解析浏览器的幕后工作原理(转)
前端文摘:深入解析浏览器的幕后工作原理 https://www.cnblogs.com/lhb25/p/how-browsers-work.html 您可能感兴趣的相关文章 10大流行 Metro U ...
- JavaScript 运行原理解析
参考 JavaScript 运行原理解析 [先读这一篇] https://juejin.cn/post/6844903551009816589 JavaScript is one of the 3 l ...
- 深入解析浏览器的幕后工作原理
前端文摘:深入解析浏览器的幕后工作原理(转载出处) 您可能感兴趣的相关文章 10大流行 Metro UI Bootstrap 主题和模板 精选12款优秀 jQuery Ajax 分页插件和教程 10大 ...
- 解析html网页原理,深入浅出浏览器渲染原理
一.前言 浏览器的内核是指支持浏览器运行的最核心的程序,分为两个部分,一是"渲染引擎",二是"JS引擎". 渲染引擎在不同的浏览器也不是都相同的,比如: Fir ...
- JavaScript 工作原理之十一-渲染引擎及性能优化小技巧
原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第十一章. 迄 ...
- JavaScript 工作原理(二)-如何在 V8 引擎中书写最优代码的 5 条小技巧(译)
From:https://segmentfault.com/a/1190000014770145 原文请查阅这里,略有删减. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScrip ...
最新文章
- 老齐学python的django 源代码_《跟老齐学Python:Django实战》真正的手把手“带”您学习...
- python 格式化方法 从其他信息构建字符串
- 力扣559. N 叉树的最大深度(JavaScript)
- php无法连接mysql(selinux)
- NUC1196 Sum【水题+数学题】
- 概率论基础知识(书本摘录总结)
- 最好用的伪原创工具手机app
- [转载]使用 Apache Geronimo 和 POJO 构建 SOA 框架
- maven 使用本地库
- Time时间格式化当前时间
- 一些学习经验总结和分享
- 简单制作《坦克大战》
- n9006 android6,三星N9006怎么用 三星N9006使用方法【详解】
- 中国现在开源系统cms 论坛排行榜
- jQuery.on() 函数详解
- android 百度转码,自适应网站移动端被百度转码解决方案
- window解压缩软件解压tar.gz文件遇到的坑
- 冶金工业概论多媒体辅助教学系统
- AutoCAD 2013 .net插件创建向导现在支持Map 3D,Civil 3D,AutoCAD Architecture 和AutoCAD MEP...
- Acer宏基笔记本电脑,宏碁暗影骑士擎AN515-58原装出厂恢复原厂预装Windows11/Win10镜像oem专用系统
热门文章
- python 3.9.0a0_Python 3.9.0 稳定版发布
- image pil 图像保存_如何利用python中的PIL库做图像处理?
- mysql三种引擎_MySQL常见的三种存储引擎
- MySQL——JSON_REPLACE()函数修改JSON属性值
- 异常解析————Parameter metadata not available for the given statement
- idea数据库反向生成实体类_asp.net core 系列 21 EF现有数据库进行反向工程
- php实时上传多张图片,PHP实现多张图片上传预览功能
- 血型算法php,血型排行榜!(真的很准)
- svg 地图_找地图素材?有这个网站就够了!
- curaengine linux编译,CuraEngine开源程序解读