zoukankan      html  css  js  c++  java
  • javascript运行机制

    运行顺序

    1. 读入第一个代码段(js执行引擎并非一行一行地执行程序,而是一段一段地分析执行的)
    2. 做词法分析和语法分析,没错则解析成语法树,有错则报语法错误并跳转到步骤5
    3. 对var变量和function定义做预解析
    4. 执行代码段,有错则报错(比如变量未定义)
    5. 如果还有下一个代码段,则读入下一个代码段,重复步骤2
    6. 结束

    注: javascript是按块执行, 但是不同块属于同一个全局作用域, 即块之间的变量和函数是可以共享的;

    词法分析

    1. 词法文法

      • tokens: 文法终结符, 空白和注释之外的输入元素,如:ECMAScript语言的保留字,标识符,字面量,标点符号等

      • 行结束符虽然不被视为tokens,但会成为输入元素流的一部分,用于引导处理自动插入分号

      • 空白和单行注释会被简单的丢弃,不会出现在语法文法的输入元素的流中

      • 词法文法有两个目标符。InputElementDiv 目标符用在允许除法 (/) 或除赋值 (/=) 运算符开始的语法文法上下文中。InputElementRegExp 目标符用在其他语法文法上下文。

    2. 词法分析

      当一个字符流被解析为 ECMAScript 程序,它首先通过词法文法应用程序反复转换为一个输入元素流;然后再用一个语法文法应用程序解析这个输入元素流。当输入元素流没有更多 tokens 时,如果 tokens 不能解析为 Program 目标非终结符的单一实例,那么程序在语法上存在错误。

    3. 目标非终结符: TODO

    语法分析

    将词法分析阶段产生的记号, 生成语法树,如果无法生成,则报错;

    1. 符号表:记录变量、函数、类
    2. 语法树:程序结构的树形表示,将此树形结构生成中间代码

    待续...

  • 相关阅读:
    request.getAttribute()和 request.getParameter()的区别
    jquery中$.get()提交和$.post()提交有区别吗?
    jQuery有几种选择器?
    jQuery 库中的 $() 是什么?
    JavaScript内置可用类型
    MySQL数据库中,常用的数据类型
    简单叙述一下MYSQL的优化
    什么是JDBC的最佳实践?
    Vue官网教程-条件渲染
    Vue官网教程-Class与Style绑定
  • 原文地址:https://www.cnblogs.com/mininice/p/3876308.html
Copyright © 2011-2022 走看看