美文网首页javascript
javaScript引擎,运行时和调用堆栈的概述

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

作者: 技术与健康 | 来源:发表于2018-01-19 22:46 被阅读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里面最主要事件模型。对于同步的处理逻辑,一定要控制好处理时间。

    相关文章

      网友评论

        本文标题:javaScript引擎,运行时和调用堆栈的概述

        本文链接:https://www.haomeiwen.com/subject/arnaoxtx.html