点击下方“前端开发爱好者”,选择“设为星标”
第一时间关注技术干货!
哈喽,大家好 我是
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 实战教程。 回复数据结构算法,获取数据结构算法教程。 回复架构师,获取 架构师学习资源教程。 更多教程资源应有尽有,欢迎 关注获取。