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;ii+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;
}