Javascript 为什么此函数返回无法读取未定义的变量,而变量实际已定义?

Javascript 为什么此函数返回无法读取未定义的变量,而变量实际已定义?,javascript,undefined,Javascript,Undefined,这就是功能: 函数交换核心(玩家){ for(设i=0;i0之前,您需要检查是否存在任何内容。您需要更改while循环 while (output[i].points > 0 && listItem[k] && listItem[k].stock > 0) 在代码中,k在while循环中每次都递增。在k=5位置,在listItem[5]位置没有元素。所以它会给出错误` listItem[k] is undefined 因此,在检查listItem

这就是功能:

函数交换核心(玩家){
for(设i=0;i0&&listItem[k]。库存>0){
如果(输出[i].points>=listItem[k].harga&&listItem[k].stock>0){
输出[i].items.push(listItem[k].name)
listItem[k]。库存--
输出[i]。点数-=listItem[k]。harga
}
k++
}
}
返回输出
}
让listItem=[
{名称:“泰迪熊”,哈格:1000,股票:1},
{名称:“玩具士兵”,哈格:200,股票:5},
{名字:“Ducky”,哈格:500,股票:3},
{名称:“兔子”,哈格:300,股票:2},
{名称:“巴斯光年”,哈尔加:2000,股票:1}]
控制台日志(exchangeScore)([
{名称:“Yanto Kopling”,分数:100},
{姓名:“Audric”,分数:300},
{姓名:“阿育”,点数:1000},
{名称:“Semmi”,点数:1000},
{名称:“Mahdi”,点数:2000},
{名称:“索菲亚”,点数:2000}

]));您需要更改while循环

while (output[i].points > 0 && listItem[k] && listItem[k].stock > 0)
在代码中,
k
在while循环中每次都递增。在
k=5
位置,在
listItem[5]
位置没有元素。所以它会给出错误`

listItem[k] is undefined

因此,在检查
listItem[k].stock>0之前,您需要检查是否存在任何内容。

您需要更改while循环

while (output[i].points > 0 && listItem[k] && listItem[k].stock > 0)
在代码中,
k
在while循环中每次都递增。在
k=5
位置,在
listItem[5]
位置没有元素。所以它会给出错误`

listItem[k] is undefined

因此,在检查
listItem[k].stock>0
之前,您需要检查是否存在任何问题。

您多次执行
listItem[k].stock
。您的错误意味着
列表项[k]
未定义。这意味着
k
可能是
listItem
数组的“超出范围”。@ajobi我明白了。感谢您投票关闭,因为问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能帮助未来的读者。
While(输出[i].points>0&&k0)
应该避免它。但不确定它是否是正确的修复方法。您正在多次执行
listItem[k]。stock
。您的错误意味着
列表项[k]
未定义。这意味着
k
可能是
listItem
数组的“超出范围”。@ajobi我明白了。感谢您投票关闭,因为问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能帮助未来的读者。
While(输出[i].points>0&&k0)
应该避免它。但不确定它是否正确。