break结束循环推荐使用。
return 直接跳出方法。
js中的break 、continue,、return
break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。
由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的。
continue语句和break语句相似。所不同的是,它不是退出一个循环,而是开始循环的一次新迭代。
continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误。
return语句就是用于指定函数返回的值。
return语句只能出现在函数体内,出现在代码中的其他任何地方都会造成语法错误,当执行return语句时,即使函数主体中还有其他语句,函数执行也会停止。
我估计是你用的递归方法出的问题。假设你递归到了N层,在N+1层的时候找到了你要的结果。此时的循环只是跳出了N+1层的,没有跳出N层,而N层的循环可能还没有结束,会继续执行,更有可能还会继续递归。不知道我的猜想对不对,呵呵~!建议使用try/catch判断找到结果后抛出异常来终止函数的执行。我个人不喜欢使用递归方法。
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 对此不起作用
}
}