我细读的有关JS运行时的所有博客和视频都谈到了堆栈,堆和队列。这些示例都没有解释的一件事是,在运行时传递函数声明时会发生什么?
在函数最初被调用之后,我所见过的任何资料都没有谈到函数声明存储在内存中或具有要引用的任何类型的标志以返回到该点。
例如,考虑以下博客:https : //blog.sessionstack.com/how-does-javascript-actually-work-part-1-b0bacc073cf
这篇特别的博客文章解释了调用栈,但没有解释函数声明multiple(x,y)会发生什么。是否以任何方式存储或引用以供将来调用?
function multiply(x, y) {
return x * y;
}
function printSquare(x) {
var s = multiply(x, x);
console.log(s);
}
printSquare(5);
该代码分为两个阶段进行评估:首先对其进行解析,然后对其进行评估。在解析期间,将创建所谓的EnvironmentRecords。规格说明:
每个声明性环境记录都与包含变量,常量,let,类,模块,导入和/或函数声明的ECMAScript程序范围相关联。声明性环境记录绑定由其范围内包含的声明定义的一组标识符。
在评估阶段,将在当前环境记录中查找标识符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句