如何理解JavaScript运行原理,过程是怎样的

Admin 2022-06-27 群英技术资讯 294 次浏览

在实际应用中,我们有时候会遇到“如何理解JavaScript运行原理,过程是怎样的”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“如何理解JavaScript运行原理,过程是怎样的”文章能帮助大家解决问题。


1、什么是JavaScript引擎

JavaScript引擎是一个计算机程序,它的主要作用是JavaScript运行时将源码编译为机器码。

每个主流Web浏览器都有自己的JavaScript引擎,它通常由web浏览器供应商开发。

  • Google Chrome V8。
  • Mozilla Firefox Spider Monkey。
  • Safari Javascript Core Webkit。
  • Edge (Internet Explorer)

以前的JavaScript引擎主要在web浏览器使用,不过随着nodejs的出现就打破了这种局限。

2、V8引擎

V8包含了解析器(parser),解释器(Ignition),优化编译器(TurboFan )。

解析器(parser):用于生成抽象语法树。

解释器(Ignition):将源码转换为字节码。

优化编译器(TurboFan ):进行一些优化编译优化处理,比如内联缓存。

下面是V8引擎的大体工作流程。

  • 首先 解析器 先生成一个抽象语法树。
  • 然后 解释器 根据语法树生成V8格式的字节码。
  • 优化编译器 再将字节码编译成机器码。

3、运行时环境

浏览器运行环境中,浏览器提供了Web API如:HTTP请求,计时器,事件等。

服务器运行环境中,nodejs提供了API。

下面是JavaScript在浏览器中运行时的架构,它包含一个内存堆、一个内存栈、一个事件循环、一个回调队列。

stack
heap
call stack
callback queue
event loop

4、运行时的调用栈

下面代码展示了JavaScript执行的调用栈变化。

function add(x, y) {
    return x + y;
}

function print(x, y) {
    console.log('x+y=',add(x, y))
}

print(1, 3)

5、异步任务

JavaScript先执行了 print 函数,然后调用Web API setTimeout() Web API存储了 setTimeout() 的回调函数,3秒后将回调函数添加到回调队列,事件循环发现调用栈为空,于是将队列里的回调函数移至调用栈执行。

function add(x, y) {
    return x + y;
}

function print(x, y) {
    setTimeout(function (){
        console.log('x+y=',add(x, y))
    }, 3000)
}

print(1, 3)

6、总结

JavaScript运行主要依靠JavaScript引擎和运行环境, 引擎 将js源码翻译成计算机所理解的机器码, 运行环境 提供了一些与计算机底层通讯的API和运行实现。


以上就是关于“如何理解JavaScript运行原理,过程是怎样的”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注群英网络,小编每天都会为大家更新不同的知识。
群英智防CDN,智能加速解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服