90% 的初中级前端都会 “跪” 在这道题上!

职场   2024-09-12 08:33   北京  

点击下方“前端开发爱好者”,选择“设为星标

第一时间关注技术干货!

哈喽,大家好 我是 xy👨🏻‍💻。今天给大家分享一道面试题:JavaScript 运行是怎么运行的!

JavaScript 的运行过程可以被分解为几个关键步骤,其中包括语法分析预编译解释执行

下面是对这三个步骤的详细讲解!

语法分析(Lexical Analysis):

语法分析是 JavaScript 引擎处理代码的第一步。

在这个阶段,引擎将源代码字符串分解成一个个的词素(token),这些词素是语言中有意义的最小单元,如关键字变量名操作符等。

例如,当遇到

var name = '前端开发爱好者';

这样的语句时,语法分析器会将其分解为

  • var(关键字)

  • name(标识符)

  • =(赋值操作符)

  • 前端开发爱好者(字符串字面量)

  • ;(语句终结符)

预编译(Pre-compilation)

预编译是语法分析之后的一个阶段,这个阶段主要进行作用域链的建立和变量提升

JavaScript 引擎会创建一个作用域链,确保变量和函数的访问遵循正确的作用域规则。

变量提升是 JavaScript 中一个独特的特性,它指的是变量函数声明会被提升到它们所在作用域的顶部。

例如,即使在代码中后面声明了变量,引擎也会在预编译阶段将它们提升到顶部,但只有声明部分被提升,初始化部分不会。

图片来源于网络

另外,预编译阶段还会进行一些静态错误检查,比如检查变量是否已经声明。

解释执行(Interpretation)

解释执行是 JavaScript 代码实际运行的阶段。在这个阶段,JavaScript 引擎逐行读取代码,并根据代码的指令执行相应的操作。

解释器会逐个处理词素,将其转换成可执行的机器指令。这个过程可能涉及到变量的查找函数的调用表达式的计算等。

JavaScript 的解释执行通常比较慢,因为它需要在运行时动态地解析和执行代码。

为了提高性能,现代浏览器的 JavaScript 引擎通常会使用一些优化技术,如即时编译(JIT)编译器,将热点代码(频繁执行的代码)编译成机器码以提高执行效率。

这三个步骤共同构成了 JavaScript 代码的执行流程。值得注意的是,现代 JavaScript 引擎可能还会使用其他技术,如优化的解析器、字节码、JIT 编译等,以提高代码的执行效率。

写在最后

公众号前端开发爱好者 专注分享 web 前端相关技术文章视频教程资源、热点资讯等,如果喜欢我的分享,给 🐟🐟 点一个 👍 或者 ➕关注 都是对我最大的支持。

欢迎长按图片加好友,我会第一时间和你分享前端行业趋势面试资源学习途径等等。

添加好友备注【进阶学习】拉你进技术交流群

关注公众号后,在首页:

  • 回复 面试题,获取最新大厂面试资料。
  • 回复 简历,获取 3200 套 简历模板。
  • 回复 React 实战,获取 React 最新实战教程。
  • 回复Vue 实战,获取 Vue 最新实战教程。
  • 回复ts,获取 TypeScript 精讲课程。
  • 回复vite,获取 Vite 精讲课程。
  • 回复uniapp,获取 uniapp 精讲课程。
  • 回复js 书籍,获取 js 进阶 必看书籍。
  • 回复Node,获取 Nodejs+koa2 实战教程。
  • 回复数据结构算法,获取数据结构算法教程。
  • 回复架构师,获取 架构师学习资源教程。
  • 更多教程资源应有尽有,欢迎 关注获取。

前端开发爱好者
分享 web 前端相关技术文章、工具资源、精选课程、视频教程资源、热点资讯等
 最新文章