Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个for循环是无限循环,尽管有条件?_Javascript_Loops - Fatal编程技术网

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

Javascript 为什么这个for循环是无限循环,尽管有条件?,javascript,loops,Javascript,Loops,下面的函数是创建数组切片,推送是给无限循环。有人能证明这一点吗 function MyFunction(arr, size) { var newArr = []; for(var i=0; i<arr.length; i+size) { newArr.push(arr.slice(i,i+size)); } return newArr; } 函数MyFunction(arr,大小){ var newArr=[]; 对于(var i=0

下面的函数是创建数组切片,推送是给无限循环。有人能证明这一点吗

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

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

   }  
  return newArr;
}
函数MyFunction(arr,大小){
var newArr=[];

对于(var i=0;i我认为
i+size
应该是
i+=size
i=i+size

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

编辑

您可能还需要更改循环体以匹配
,同时也要更改
循环

例如,把它们放在一起,这个
for
循环应该与
while
循环等效:

for (var i = 0; i < arr.length; i += size) {
    newArr.push(arr.slice(i, i + size));
}
for(变量i=0;i
在for循环中,永远不会增加变量
i
。就是这样。
i++
自动递增
i
i+大小
不会

应该是
i=i+size
i+=size

希望这有帮助

编辑

您的for循环应该是:-

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

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

   }  
  return newArr;
}
函数MyFunction(arr,大小){
var newArr=[];

对于(var i=0;i
i+size
不会改变
i
i+=size
会改变。只需比较两种方法,您就可以在第一种方法中发现问题。谢谢,我删除了break语句;@RanchiRhino我可以问您为什么接受另一个(稍后)答案而不是我的答案吗?这两个答案几乎相同。
function MyFunction(arr, size) {
  var  newArr = [];

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

   }  
  return newArr;
}