求助:对象中调用函数时参数未定义,直接传值正常
问题分析与解决
核心问题
你遇到的参数未定义报错,本质是调用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
相关产品推荐
相关产品推荐

