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

求助:对象中调用函数时参数未定义,直接传值正常

问题分析与解决

核心问题

你遇到的参数未定义报错,本质是调用GenerateAllQuantities(QuantityPerOrder)时,当前代码作用域内不存在名为QuantityPerOrder的变量。直接传入具体数值(比如80)能正常运行,是因为数值本身是有效的字面量,不需要依赖外部变量。

解决方案

1. 先定义并赋值QuantityPerOrder变量

在data对象定义之前,明确声明并给QuantityPerOrder赋值,确保它在当前作用域可访问:

// 先定义变量并赋值
const QuantityPerOrder = 80; // 替换成你实际需要的数值
const data = {
  labels: GenerateAllQuantities(QuantityPerOrder)
}

function GenerateAllQuantities(QuantityPerOrder) {
    var TotalQuantityPerAmmount = [QuantityPerOrder];
    var AmmountsOfOrder = QuantityPerOrder / 8;

    for(var i = 1; i < 8; i++) {
        let OrderQuantity = TotalQuantityPerAmmount[0] - AmmountsOfOrder;
        TotalQuantityPerAmmount.unshift(OrderQuantity)
    }

    return TotalQuantityPerAmmount;
}

2. 确保变量来自有效外部作用域

如果QuantityPerOrder是从外部传入(比如作为函数参数),要保证它能被当前代码访问到:

function GenerateAllQuantities(QuantityPerOrder) {
    var TotalQuantityPerAmmount = [QuantityPerOrder];
    var AmmountsOfOrder = QuantityPerOrder / 8;

    for(var i = 1; i < 8; i++) {
        let OrderQuantity = TotalQuantityPerAmmount[0] - AmmountsOfOrder;
        TotalQuantityPerAmmount.unshift(OrderQuantity)
    }

    return TotalQuantityPerAmmount;
}

// 把QuantityPerOrder作为参数传入构建函数
function createData(QuantityPerOrder) {
  const data = {
    labels: GenerateAllQuantities(QuantityPerOrder)
  }
  return data;
}

// 调用时传入具体数值
const myData = createData(80);

3. 检查变量拼写

确认QuantityPerOrder的大小写、拼写完全一致——JavaScript是大小写敏感的,比如quantityperorder和QuantityPerOrder会被视为两个不同的变量,拼写错误也会导致未定义报错。

验证方法

在调用GenerateAllQuantities之前,添加一行打印代码:

console.log(QuantityPerOrder);

如果控制台输出undefined,说明这个变量确实未在当前作用域定义,需要按照上面的方案补充定义。

内容的提问来源于stack exchange,提问作者Avedis Yapoudjian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:50:43