簡體   English   中英

調用函數時實際上發生了什么?

[英]What is really happening when I call a function?

這可能是一個簡單的問題,但最近我一直在思考。 我已嘗試研究答案,但尚未找到令人滿意的答案。
基本上,當我調用函數時,幕后發生了什么? 說:-

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

我知道這樣做sayHello.call(); sayHello.apply(); sayHello(); 但是還有更多有關下面發生的事情的信息嗎?還是隱藏在神秘的本機代碼后面?

以下是解釋程序進行JS函數調用的一些操作:

  • 創建一個新的作用域對象。 創建一個參數對象並將其與傳遞給函數的所有參數一起放入作用域對象。
  • 新函數中的所有局部變量都將放入范圍對象中。
  • 對下一行代碼的引用被壓入執行堆棧(因此,解釋器知道函數返回時該去向何方)。
  • 該指針被適當地設置。
  • 執行將轉移到該功能的代碼。

這由JS解釋器(許多工作之一)的內部管理,這可能是本機代碼。


如果你想調用函數B()隨時函數A()被調用時,你可以替換函數A()與自己的代理,其調用函數B()然后調用原A()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM