zoukankan      html  css  js  c++  java
  • 浏览器解析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。

        基础步骤就是这,一步一步的来,就没有什么大问题。

  • 相关阅读:
    实现响应式——Bootstrap的删格系统详解
    javascript-OOP基础详解
    简单又炫酷的two.js 二维动画教程
    AngularJS [ 快速入门教程 ]
    Js函数初学者练习(一)switch-case结构实现计算器。
    通过JS检测客户端是否禁用Cookie
    JavaScript数组去重多种方法
    前端页面灰白
    VUE 移动端只获取当前拍摄照片,不允许相册获取 及 input标签capture属性详解
    VUE 超好看气泡进度条组件
  • 原文地址:https://www.cnblogs.com/long-z/p/10136657.html
Copyright © 2011-2022 走看看