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

JavaScript调用calcAverage报错不是函数但已定义该如何解决

报错原因

  • 变量被意外覆盖:你使用let声明了顶层变量calcAverage为箭头函数,但函数内部直接对同名的顶层变量进行了重新赋值。第一次调用calcAverage函数时,函数内部的赋值逻辑会把calcAverage的值修改为数字类型的计算结果,此时calcAverage不再是函数,第二次调用时自然会抛出calcAverage is not a function的类型错误。
  • 额外逻辑问题:当前的平均值计算存在运算符优先级错误,v1+v2+v3 / 3的实际执行逻辑为v1 + v2 + (v3 / 3),不符合三个数求和后取平均的需求。

修复方案

将函数内部的计算结果存入局部变量,不要覆盖顶层的函数变量,同时修正运算优先级即可:

let calcAverage = (v1, v2, v3) => {
  // 使用局部变量存储结果,避免修改顶层的函数变量
  const average = (v1 + v2 + v3) / 3;
  return average;
}

const d1 = calcAverage(44, 23, 71)
const k1 = calcAverage(44, 23, 71)
console.log(d1)

如果后续不需要修改calcAverage的指向,也可以直接用const声明该函数,这样当你意外给它赋值时会提前抛出常量赋值错误,更容易定位问题。

内容的提问来源于stack exchange,提问作者Golden-Dragon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:09:04