经典面试题解析:

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=22×2=4
1×3=32×3=63×3=9
1×4=42×4=83×4=124×4=16
1×5=52×5=103×5=154×5=205×5=25
1×6=62×6=123×6=184×6=245×6=306×6=36
1×7=72×7=143×7=214×7=285×7=356×7=427×7=49
1×8=82×8=163×8=244×8=325×8=406×8=487×8=568×8=64
1×9=92×9=183×9=274×9=365×9=456×9=547×9=638×9=729×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");
  }
}

02-10 09:48