Объявление вложенных циклов var - PullRequest
0 голосов
/ 02 ноября 2019

Я хочу напечатать это

1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 
5 6 7 8 9 

Код выглядит так, после многих догадок

var a=5;
for (var i = 1; i <= a; i++) {  
     var result="";
 for (var j = 1; j <= a; j++) {
    result +=(i+j - 1)+ " ";
   }
   console.log(result);
  }

Но я до сих пор не могу понять, почему, если результат varобъявление находится в каком-то другом месте (например, вне циклов), результат совершенно другой.

Ответы [ 2 ]

0 голосов
/ 02 ноября 2019

Вы можете вывести объявление result из цикла, как в:

var a = 5, result;
for (...
...

Но вы должны очистить его в каждой итерации внешнего цикла, иначе будет напечатаноувеличение числа повторяющихся шаблонов за итерацию.

Конечный код:

var a = 5, result;

for (var i = 1; i <= a; i++) {
    result = ""; //Clearing happens here.
    for (var j = 1; j <= a; j++) {
        result += (i + j - 1) + " ";
    }
    console.log(result);
}
0 голосов
/ 02 ноября 2019

Это не объявление, которое поднимается для var, а первое значение для каждой строки.

var a = 5,
    result;

for (var i = 1; i <= a; i++) {
    result = "";
    for (var j = 1; j <= a; j++) {
        result += (i + j - 1) + " ";
    }
    console.log(result);
}
...