You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用函数参数显示姓名遇Maximum call stack size exceeded错误求助

解决Maximum call stack size exceeded错误的方案

你碰到的这个Maximum call stack size exceeded错误,本质是无限递归调用导致的——你的groet函数内部一直在自己调用自己,没有停下来的条件,把浏览器的调用栈给撑爆了。

先拆解下原代码里的问题:

  • 你已经把naam作为函数参数传进来了,但函数内部又写了var naam = groet();,这行代码会直接再次调用groet函数(还没传参数),形成了无限循环的调用链。
  • 全局的var naam;其实是多余的,函数参数已经能提供你需要的变量了。

直接修正后的代码如下:

function groet(naam) {
  console.log("Hey " + naam);
  return naam;
}
groet("Rick"); // 会输出 "Hey Rick"

如果想让函数更健壮,比如没传参数时显示默认姓名,可以给参数加个默认值:

function groet(naam = "Guest") {
  console.log("Hey " + naam);
  return naam;
}

groet("Rick"); // 输出 Hey Rick
groet(); // 没传参数时输出 Hey Guest

简单总结下错误根源:每次调用groet("Rick"),函数内部都会触发新的groet()调用,这个新调用又会触发下一次,无限重复下去,直到浏览器的调用栈达到最大限制,就抛出了栈溢出的错误。去掉内部的递归调用,直接使用传入的参数就解决问题啦。

内容的提问来源于stack exchange,提问作者Rick Chardet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:13:59