关于调用堆栈

174 阅读1分钟

最近看了一些讲调用堆栈的一些文章,做个笔记因为很容易忘记

大概是下面这些

V8引擎

V8引擎是Google浏览器开发的是开源的JavaScript引擎,适用于chrome浏览器和node.js

是用来执行JavaScript代码的;

在运行JavaScript代码时发生了什么?

我们可以看一下这段代码

var num = 6;
function pow(num) {
    return num*num;
}
var res = pow(num);

1、首先引擎会创建一个全局的执行上下文,全局上下文只有一个

2、会有一个全局的储存器,调用堆栈

// 调用堆栈?Call stack

调用堆栈其实是一种后进先出(LIFO)的数据结构

它有两个作用:

1、临时存储 —— 当调用一个函数时,该函数的变量、参数会占用临时内存的堆栈帧,这里的堆栈帧是有最大上线为16000的超过就会报错max...,当执行完毕后这些会被删除;

       2、管理函数调用 —— JavaScript是单线程的,调用堆栈会告诉你什么时候压入堆栈,什么时候弹出堆栈了;

3、调用函数,会创建一个本地内存的本地执行上下文,压入堆栈,执行完毕,弹出堆栈;