当我调用一个函数时,真正发生了什么?

时间:2014-05-30 03:26:28

标签: javascript

这可能是一个简单的问题,但我最近一直在思考。我已经尝试过研究答案,但我还没有找到一个令人满意的答案 基本上,当我调用一个函数时,幕后发生了什么?说: -

function sayHello(){
    console.log('hello');
}
sayHello(); //what's happening here?

我知道做sayHello.call();sayHello.apply();与做sayHello();是一回事,但有更多信息可以了解下面发生了什么,或者它是否在神秘的本土背后码?

1 个答案:

答案 0 :(得分:2)

以下是解释器为JS函数调用所做的一些事情:

  • 创建新的范围对象。创建并放置参数对象 使用传递给函数的任何参数进入scope对象 它。
  • 新函数中的任何局部变量都放入范围 宾语。
  • 对下一行代码的引用被推送到执行 堆栈(所以解释器知道函数的去向 返回)。
  • 此指针已根据需要进行设置。
  • 执行转移到函数的代码。

这是由JS解释器的内部(它的许多工作之一)管理的,这可能是本机代码。


如果要在调用函数B()时随时调用函数A(),可以将函数A()替换为调用函数B()的自己的代理,然后调用原始函数A()

相关问题