JS的运行机制&环境说明

84 阅读1分钟

JS运行引擎组成

调用栈

同步,单线程——每个 浏览器级别的主窗口:标签页 具备 一个 独立的调用栈 。用于存放需要执行的代码指令

const a = () => {
    const b = () => {
        console.log(2)
    }
    b()
}

a()

以上指令在调用栈的表现为:

//调用栈push
a()
b()
console.log(2)

//调用栈pop
console.log(2)
b()
a()

当执行 指令过多,堆积在栈中,就会导致 栈溢出(stack overflow)

内存堆

声明的变量,以无序的方式存放在 内存堆中。如下:

const a = 1;

当分配 过多不使用 的变量占用了 内存堆 的区域,就会导致 内存溢出(memory leak)

JS运行环境

事件循环

用于监测 引擎的 同步调用栈 是否空余,因此决定合适将 回调队列 的方法放入 调用栈

Web APIs

AJAX , timeout等异步执行函数

回调队列

用于存放异步调用的执行指令