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

闭包场景下出现'expandedArray is not defined'错误的原因咨询

问题分析与解决

嘿,这个错误的原因其实非常直白——你犯了一个函数名拼写错误!

错误根源

你定义的外部函数是expandArray,但在尝试调用它并赋值给result时,你写的是:

let result = expandedArray();

这里的expandedArray多了一个字母d,JavaScript找不到这个从未定义过的函数,自然就抛出了expandedArray is not defined的错误。

对比你给出的参考示例就能看出来:示例里定义的函数是outerFunction,调用时也是严格使用outerFunction(),名字完全匹配,所以能正常运行。

修正后的代码

只需要把函数调用的名字改成正确的expandArray()就可以解决问题,完整修正后的代码如下:

function expandArray() {
  let myArray = [1, 1, 1];
  return function(addToArray) {
    myArray.push(addToArray);
    return myArray;
  };
}
let result = expandArray(); // 这里修正了函数名
result(1); // 返回 [1, 1, 1, 1]
result(2); // 再次调用会继续修改原数组,返回 [1, 1, 1, 1, 2]

闭包的验证

修正后,闭包的逻辑就能正常工作了:外部函数expandArray执行后,内部函数会保留对myArray的引用,每次调用返回的内部函数(也就是result),都会直接修改外部作用域的myArray,并且返回更新后的数组,完全符合你想要的需求。

内容的提问来源于stack exchange,提问作者3noki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:51:10