freeCodeCamp/guide/russian/certifications/javascript-algorithms-and-d.../debugging/use-caution-when-reinitiali.../index.md

1.7 KiB

title localeTitle
Use Caution When Reinitializing Variables Inside a Loop Предупреждение при переинициализации переменных внутри контура

Предупреждение при переинициализации переменных внутри контура

  • Эта задача должна быть решена путем переопределения области row[] .
  • Ниже приведен пример нужной матрицы.
[ 
 [0][0], 
 [0][0], 
 [0][0] 
 ] 
  • Однако текущая матрица, как видно ниже, далека от искомой матрицы
[ 
 [0][0][0][0][0][0], 
 [0][0][0][0][0][0], 
 [0][0][0][0][0][0] 
 ] 
  • Эта ошибка возникает из-за того, что массив row[] объявляется глобальной переменной вне цикла вложенных циклов.
  • Однако, чтобы правильно заполнить матрицу, массив row[] должен быть сброшен после каждой итерации внешнего цикла.

Решение

function zeroArray(m, n) { 
  let newArray = []; 
  for (let i = 0; i < m; i++) { 
     let row = []; /* <-----  row has been declared inside the outer loop. 
     Now a new row will be initialised during each iteration of the outer loop allowing 
     for the desired matrix. */ 
    for (let j = 0; j < n; j++) { 
 
      row.push(0); 
    } 
    newArray.push(row); 
  } 
  return newArray; 
 } 
 let matrix = zeroArray(3, 2); 
 console.log(matrix);