最近看了一些讲调用堆栈的一些文章,做个笔记因为很容易忘记
大概是下面这些
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、调用函数,会创建一个本地内存的本地执行上下文,压入堆栈,执行完毕,弹出堆栈;