繁体   English   中英

嵌套循环 var 声明

[英]Nested loops var declaration

我想打印这个

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 结果声明在其他地方(例如循环之外)结果完全不同。

它不是为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); }

可以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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM