1. break结束循环推荐使用
2. return 直接跳出方法,如果仅仅只想结束循环不建议使用,因其副作用是,这个方法不再执行
3. 循环变量=最大值/最小值(看你循环是从高数字到低还是低到高,高到低设置成0,低到高设置成数组的length,该方法对for in语句无效)
//循环变量低到高var arr=[1,2,3,4,5,6,7]
for(var i=0i<arr.lengthi++)
{
if(arr[i]==4)
{
//break//方案1
//return//方法后续代码不执行 方案2
i=arr.length//方案3
}
}
//循环变量从高到低
var arr=[1,2,3,4,5,6,7]
for(var i=arr.length-1i>-1i--)
{
if(arr[i]==4)
{
//break//方案1
//return//方法后续代码不执行 方案2
i=-1//方案3
}
}
//for in情况
//循环变量从高到低
var arr=[1,2,3,4,5,6,7]
for(var i in arr)
{
if(arr[i]==4)
{
break//方案1
//return//方法后续代码不执行 方案2
//方案3 对此不起作用
}
}
for in循环中每次循环都会将对象的key赋值例如for (key in obj),每次遍历key都会被赋值成对象obj的一个键名,{a:1,b:2}遍历过程key依次为a和b对于数组,key取得是数组下标
所以你这里遍历的是个数组,i的值分别是数组的下标,用for in遍历数组可能会由于数组增加可枚举的成员而变得不准确
你可以试一下在你的代码前加上
Array.prototype.a = 123
再运行看下结果就有问题了,不要用for in 遍历数组用forEach