027 - 进阶函数-06 call stack 调用栈

相信有过其他语言编程经验的读者都听说过CallStack的概念。Javascript中的CallStack类似。

CallStack是一个栈结构,栈的特点是LIFO(后入先出),出栈入栈只会在一端(也就是栈顶)进行。

CallStack是用来处理函数调用与返回的。每次调用一个函数,Javascript运行时会生成一个新的调用结构压入CallStack。而函数调用结束返回时,JavaScript运行时会将栈顶的调用结构弹出。由于栈的LIFO特性,每次弹出的必然是最新调用的那个函数的结构。
Javascript启动时,从文件或标准输入加载程序。加载完成时,Javascript运行时会生成一个匿名的函数,函数体就是输入的代码。




浏览器自带的控制台调试



计算1+2+3+...n的函数算法

  function sum(n) {
    if (n == 1) {
      return 1
    } else {
      return n + sum.call(undefined, n - 1)
    }
  }
  sum.call(undefined, 5) // 5 + sum(5)
  //sum(4) // 4 + sum(3)
  //sum(3) // 3 + sum(2)
  //sum(2) // 2 + sum(1)
  //sum(1)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 4,734评论 1 19
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • 题目 A binary watch has 4 LEDs on the top which represent t...
    Eazow阅读 276评论 0 0
  • 杭州的冬天,和华中的冬天不同,都是冷,杭州的冷风有种刺骨的感觉,华中稍微柔和点。今天的太阳明媚,尽管很冷,大家还是...
    马唐阅读 227评论 0 0
  • 温柔对待你遇到的每个人 作业:(1)切记一切故事都源于记忆,其本质是“故”而基本无关乎“事”,理解了这一点,就能明...
    漂亮的花阅读 329评论 0 0