javascript

javaScript引擎,运行时和调用堆栈的概述

2018-01-19  本文已影响9人  技术与健康

下图是关于js引擎的简化图


image.png

主要包含两个组件:
*内存堆 -内存分配发生的地方
*调用堆栈 - 代码执行时的堆栈

对js有一些深入了解的人,都知道v8引擎,就是这里说的一种js引擎。chrome和node用的就是v8引擎。

在实际的前端开发中,会用到很多很多浏览器提供的API,这些API来自于JS的运行时。也就是
runtime. 运行时的逻辑简图如下

image.png

这里面引入两个概念一个是eventloop 和callback queue.

先说callback queue

function multiply(x, y) {
    return x * y;
}
function printSquare(x) {
    var s = multiply(x, x);
    console.log(s);
}
printSquare(5);
image.png

关于callback queue,特别要注意递归函数,处理不当,会导致的栈溢出,如


image.png
image.png

js是单线程运行的,当callback queue中有一个耗时事件时,

image.png

见过上图吧

这就是当单线程被某个处理耗时请求时,会导致网站失去对用户的响应。。。

这就涉及js的事件循环了。对与这种问题的解决方案,就要用到异步回调的处理了,这也是js里面最主要事件模型。对于同步的处理逻辑,一定要控制好处理时间。

上一篇下一篇

猜你喜欢

热点阅读