javascript 赋值后立即未定义变量

alen0pnh  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(223)

我试图遍历一个赋给变量的数组,但我使用的IDE告诉我该变量未定义。我试图通过使用console.log(variable_name.length)来解决这个问题,它成功地返回了数组的长度,但它仍然告诉我,当试图迭代它时,变量是未定义的。

function availableActions(state, reward_matrix) {
  var current_state_row = reward_matrix[state];
  console.log(current_state_row.length);

  let av_act = [];

  for (var i = 0; i < current_state_row.length; i++) {
    if (current_state_row[i] != 0) {
      av_act.push(i);
    }
  }

  return av_act;
}

在尝试运行脚本后,我得到以下错误:

TypeError: current_state_row is Undefined

此示例程序返回一系列数组中的undefined。我认为这就是导致错误的原因。
MRE

function getRand(min, max) {
  let rand = Math.random();
  let number = rand * (max - min) + min;
  number = Math.round(number);
  return number;
}

let total = 0;

let grid = new Array(100)
for(var i = 0; i <100; i++){
  grid[i] = []
  for(var j = 0; j < 10; j++){
    grid[i].push(0)
    total++
  }
}

for (var i = 0; i < 200; i++) {
  let x = getRand(0, grid.length);
  console.log(grid[x]);
}
lp0sw83n

lp0sw83n1#

提供的MRE在循环的某些迭代中确实会产生undefined,这是由于一个off-by-one逻辑缺陷。它应该使用Math.floor,而不是Math.round
因此,要么你在原始问题中制造了类似的逻辑缺陷,要么提供的MRE不是原始问题的MRE。

相关问题