Skip to content
标签
note
字数
433 字
阅读时间
2 分钟

JavaScript 是一门解释性语言,它的代码在执行前需要经历两个阶段:编译时和运行时

编译时 (Compile TIme)

在 JavaScript 中,编译时实际上是一个预处理阶段

在这个阶段, JS 引擎对代码进行的预处理操作包含:

  • 词法分析和语法分析
    • 词法分析:代码被分解为 tokens,即最小的语法单元
    • 语法分析:tokens 被组合成语法书(AST)
  • 变量和函数的声明提升 (Hoisting)
    • 变量和函数会在代码执行前被提升到当前作用于的顶部,意味着可以在声明前使用它们

编译时并不会产生可执行的机器代码,而是转换为一种中间代码或者字节码

这个中间代码被保存在内存中,等待执行时机

运行时 (Run Time)

运行时阶段是代码的执行阶段,JS 引擎根据中间代码或字节码逐行解释执行

在这个阶段包含:

  • 上下文的创建和管理
    • 创建一个执行上下文,用于保存函数的作用域链、变量环境和调用栈等信息
  • 类型检查和转换
    • JavaScript 是一门动态类型语言,变量的类型是在运行时动态确定的
  • 代码被逐行执行
  • 变量会被赋值
  • 函数被调用
  • 根据数据和运算进行相应的计算和操作

此外,JS 引擎还会进行一些额外的操作,如 动态类型转换垃圾回收

参考

  • ChatGPT

贡献者

The avatar of contributor named as jiechen jiechen

页面历史

撰写