如何理解JavaScript运行原理,过程是怎样的
Admin 2022-06-27 群英技术资讯 1314 次浏览
在实际应用中,我们有时候会遇到“如何理解JavaScript运行原理,过程是怎样的”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“如何理解JavaScript运行原理,过程是怎样的”文章能帮助大家解决问题。JavaScript引擎是一个计算机程序,它的主要作用是JavaScript运行时将源码编译为机器码。
每个主流Web浏览器都有自己的JavaScript引擎,它通常由web浏览器供应商开发。

Google Chrome V8。
Mozilla Firefox Spider Monkey。
Safari Javascript Core Webkit。
Edge (Internet Explorer)以前的JavaScript引擎主要在web浏览器使用,不过随着nodejs的出现就打破了这种局限。
V8包含了解析器(parser),解释器(Ignition),优化编译器(TurboFan )。
解析器(parser):用于生成抽象语法树。

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

优化编译器(TurboFan ):进行一些优化编译优化处理,比如内联缓存。
下面是V8引擎的大体工作流程。

浏览器运行环境中,浏览器提供了Web API,如:HTTP请求,计时器,事件等。
服务器运行环境中,nodejs提供了API。
下面是JavaScript在浏览器中运行时的架构,它包含一个内存堆、一个内存栈、一个事件循环、一个回调队列。

stack heap call stack callback queue event loop
下面代码展示了JavaScript执行的调用栈变化。

function add(x, y) {
return x + y;
}
function print(x, y) {
console.log('x+y=',add(x, y))
}
print(1, 3)
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)
JavaScript运行主要依靠JavaScript引擎和运行环境, 引擎 将js源码翻译成计算机所理解的机器码, 运行环境 提供了一些与计算机底层通讯的API和运行实现。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了React.js前端导出Excel的方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要为大家介绍了js前端获取用户位置及ip属地信息示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要介绍了面试官:为什么Vue中的v-if和v-for不建议一起用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要为大家详细介绍了原生JavaScript实现购物车效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要给大家分享vue实现点击切换图片效果的内容,切换图片的效果在很多网站上都是比较常见的,小编觉得比较实用,因此分享给大家做个参考,感兴趣的朋友可以看看,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008