JavaScript 调用栈如何处理函数调用

JavaScript 调用栈如何处理函数调用

在本文中,我们将看到JavaScript中的调用栈如何处理JavaScript程序中的函数。

调用栈

在任何编程语言中,调用栈是一个负责执行程序中的函数调用的基本概念。在执行过程中,它还会管理它们的执行顺序。调用栈遵循后进先出(LIFO)原则。这意味着最近添加到栈中的函数首先执行。一旦函数完成其执行,它的执行上下文将从调用栈中删除,并将控制返回给调用它的函数。

示例: 在这个例子中,我们将进行一些函数调用,以展示JavaScript中调用栈的工作方式。

Javascript

// Function to start intro 
function intro(name) { 
    console.log(`Its, ${name}!`); 
    describe(); 
} 
  
// Function to add descripton 
function describe() { 
    console.log("A computer Science Portal!"); 
} 
  
// Main or primary function 
function gfg_run() { 
    intro("gfg"); 
    console.log("visit, https://www.geeksforgeeks.org/"); 
} 
  
// Function call 
gfg_run();
JavaScript

输出

Its, gfg!
A computer Science Portal!
visit, https://www.geeksforgeeks.org/
JavaScript

解释

上面的示例按照以下顺序执行…

步骤1: 最初,调用栈和输出都为空,直到代码中出现函数调用。

JavaScript 调用栈如何处理函数调用

步骤2: 首先,调用主要函数即gfg_run()并将其移入内存中

JavaScript 调用栈如何处理函数调用

步骤3: 然后,此函数在执行时调用第二个函数,即intro(),因此intro被移动到堆栈的顶部以进行执行

JavaScript 调用栈如何处理函数调用

步骤4: 进一步讲,intro函数在执行时先打印信息,然后调用describe()函数。同时,describe函数被移到顶部以被执行。

JavaScript 调用栈如何处理函数调用

步骤5: 现在没有更多的函数调用了,目前栈中最顶部的函数开始执行,它的名称是describe()。

JavaScript 调用栈如何处理函数调用

步骤6: 执行完描述后,控制流会跳转回intro()函数。

JavaScript 调用栈如何处理函数调用

步骤7: 执行完成后,调用堆栈中的intro函数也弹出,并且控制流程达到gfg_run(),然后执行并显示输出结果。

JavaScript 调用栈如何处理函数调用

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册