首页 > 技术文章 > for循环延伸

jiajiamiao 2019-10-14 11:28 原文

经典面试题解析:

for(var i = 1 ; i < 5 ; i++){
    console.log(i)
  }
//1 2 3 4
-----------------------------------------------------
  for(var i = 1 ; i < 5 ; i++){
    setTimeout(function(){
      console.log(i)
    },0)
  }
//5 5
  for(var i = 1 ; i < 5 ; i++){
    setTimeout(()=>{
      console.log(i)
    },0)
  }
//5 5
-------------------------------------------------------
var 换成let之后得到的值为
for(let i = 1 ; i < 5 ; i++){
    console.log(i)
  }
//1234
  for(let i = 1 ; i < 5 ; i++){
    setTimeout(function(){
      console.log(i)
    },0)
  }
1234
  for(let i = 1 ; i < 5 ; i++){
    setTimeout(()=>{
      console.log(i)
    },0)
  }
1234
-----------------------------------------------------------
for(var i = 1 ; i < 5 ; i++){
    (function(){
      var now = i
      setTimeout(function(){
        console.log(now)
      },0)
    })() 
  }
// 1234

for(var i = 1 ; i < 5 ; i++){
    (function(now){
      setTimeout(function(){
        console.log(now)
      },0)
    })(i) 
  }
//1234

---------------------------------------
function Test(){
var k=0;
for(j=0,i=0;j<6,i<10;j++,i++)
{
k=i+j;
}
console.log(k);
}
Test()
//18
ps//(这里需要注意,循环继续的判断依据以分号前的最后一项为准,即判断i<10符不符合条件。for循环共执行10次,k的最终值等于18。如果把条件j<6,i<10;改成j<10,i<6;
结果将完全不同,此时循环执行到i=5就会结束,此时k=10。)

-----------------------------------------------------------
for循环实现九九乘法表

var num = '';
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
num += j + '×' + i + '=' + j * i + '\t';
}
num += '\n';
}

//

1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81

或者

var i = 1;
var j = 1;
for (i = 1, j = 1; j <= 9; i++) {
  console.log(j + "*" + i + "=" + j * i + "\t");
  if (i == j) {
    i = 0;
    j++;
    console.log("\n");
  }
}

 

推荐阅读