为什么这个for循环是无限循环,尽管条件?

Ran*_*ino -1 javascript loops

下面这个函数是创建数组切片,push是无限循环.任何人都可以试图证明这一点.

function MyFunction(arr, size) {
  var  newArr = [];

  for(var i=0; i<arr.length; i+size)    
   {  
    newArr.push(arr.slice(i,i+size));

   }  
  return newArr;
}
Run Code Online (Sandbox Code Playgroud)

我能够通过下面的while循环实现我的要求,尽管看起来几乎相似.

function MyFunction(arr, size) {
  var  newArr = [];
  var i = 0;
  while(i < arr.length)    
  {      
    newArr.push(arr.slice(i,i+size));
    i = i + size;  
   }  
  return newArr;

}
Run Code Online (Sandbox Code Playgroud)

样本输入: - myFunction(["a","b","c","d"],2);

样本输出: - [["a","b"],["c","d"]]

use*_*559 10

我认为i+size应该是i += sizei = i + size.

在第一个循环中,你永远不会递增i.

编辑

您可能还想更改循环体以匹配while循环.

例如,将它们放在一起,这个for循环应该等同于你的while循环:

for (var i = 0; i < arr.length; i += size) {
    newArr.push(arr.slice(i, i + size));
}
Run Code Online (Sandbox Code Playgroud)