首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript运行时

JavaScript运行时
EN

Stack Overflow用户
提问于 2018-11-21 18:43:54
回答 2查看 81关注 0票数 0

我所阅读的关于JS运行时的所有博客和视频都谈到堆栈、堆和队列。这些例子中没有一个解释过函数声明在运行时传递时会发生什么?

我所看到的任何源都没有提到函数声明存储在内存中,或者在函数最初调用之后,有任何类型的标志可以引用到这个位置。

例如,考虑以下博客:https://blog.sessionstack.com/how-does-javascript-actually-work-part-1-b0bacc073cf

这篇特定的博客文章解释了调用堆栈,但没有解释函数声明乘法(x,y)发生了什么。它是否以任何方式存储或引用以供将来调用?

代码语言:javascript
复制
function multiply(x, y) {
    return x * y;
}
function printSquare(x) {
    var s = multiply(x, x);
    console.log(s);
}
printSquare(5);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-21 18:52:31

代码的计算分为两个阶段:首先对代码进行解析,然后对代码进行评估。在解析过程中,创建了所谓的EnvironmentRecords。说明书上写着:

每个声明式环境记录都与包含变量、常量、let、类、模块、导入和/或函数声明的ECMAScript程序作用域相关联。声明式环境记录绑定由其作用域中包含的声明定义的一组标识符。

在评估阶段,标识符将在当前环境记录中查找。

票数 0
EN

Stack Overflow用户

发布于 2018-11-21 18:47:50

它们被添加到全局window对象中,就像全局变量一样。

代码语言:javascript
复制
function multiply(x, y) {
    return x * y;
}
function printSquare(x) {
    var s = multiply(x, x);
    console.log(s);
}
printSquare(5);

console.log(window.multiply(2,2));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53418666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档