浏览器解析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

posted @   拼一个属于自己的未来  阅读(237)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理
点击右上角即可分享
微信分享提示