javascript - JavaScript 中的返回值

标签 javascript

我已经编程 5 年了,但我刚刚开始想知道一些事情。在此代码示例中,我从函数返回一个值并将其存储为变量。这按什么顺序发生?该语言是解释型语言还是编译型语言重要吗?

function foo() {
    return "junk";
}

var bar = foo();

现在我知道了 bar =“垃圾”。这按什么顺序发生?我知道当调用一个函数时,它会将控制权返回给调用它的函数,并且程序会从中断处继续,那么这是否意味着它会返回到 'var bar =' ?

在动态类型语言中, bar 最初是如何创建的?它是在堆上创建的吗?

最佳答案

JavaScript 中的所有函数调用都作为帧堆栈执行。

在您的情况下,当发生“foo”调用时,将为整个“foo”函数调用创建一个堆栈帧,并且该帧包含所有 foo 的变量及其信息。

如果在 foo 中调用另一个函数,则会为该函数创建另一个堆栈帧。

你知道堆栈的行为是对的,最后进来的先出来。这里 foo 内部的函数(如果存在)首先执行并退出堆栈。下一个回合是“foo”。

然后“foo”执行并从堆栈中出来,现在变量turn出现(在你的情况下它是“bar”)。

关于javascript - JavaScript 中的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297942/

相关文章:

javascript - 在 JavaScript 中创建动态重新调度 GSource

javascript - 如何在多选jquery插件中获取未选中的值

javascript - 我们如何使用 Protractor 在不同的环境中运行规范

javascript - 在 body 中定义不同的 window.open 目标 URL

javascript - 为什么我的 javascript 只在重复代码时触发?

javascript - 在匹配的 DOM 元素集上使用 jQuery 时,是否需要使用索引号?

javascript - 如何在Phaser的更新方法中正确设置计数器?

javascript - 如何使用路由器在 HTML View 之间切换

javascript - 即使没有错误,Promise 也会被拒绝。 Node.js

javascript - 将字符串转换为数组 - jQuery.inArray() 不工作