我是 js 的新手,正在阅读 Eloquent javascript 书,但调用堆栈部分让我感到困惑。这是示例代码:
debugger;
function greet(who) {
debugger;
console.log("Hello " + who);
}
debugger;
greet("Harry");
debugger;
console.log("hi");
console.log("bye");
这是我观察到的,debugger 和 console.log 是一个匿名调用。函数 greet 是在全局范围内定义的,但是当我到达第 7 行时,堆栈上仍然有一个匿名调用,并且函数 greet 被添加到堆栈上?但为什么会有匿名?有人可以告诉我更多关于调用堆栈的信息以及这里发生了什么吗?
最佳答案
所有顶级代码(不在函数中)都会被 JS 引擎自动移动到内部函数中。您的代码将转换为:
(function() {
debugger;
function greet(who) {
debugger;
console.log("Hello " + who);
}
debugger;
greet("Harry");
debugger;
console.log("hi");
console.log("bye");
})();
这是位于调用堆栈底部的匿名函数。
关于javascript - 内置函数是否添加到调用堆栈中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43699726/