当前位置:嗨网首页>书籍在线阅读

29-使用break或return避免不必要的计算

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.3.2 使用break或return避免不必要的计算

如果循环仅仅是为了找到一个特定值,这样就没有必要在已经找到目标值后还继续执行到最后。

比如,计算一个数字是否为素数是一个相对耗费资源的计算。如果想从1 000个数字中查找第一个素数,比较幼稚的做法可能是:

let firstPrime = null;
for(let n of bigArrayOfNumbers) {
    if(isPrime(n) && firstPrime === null) firstPrime = n;
}

如果 bigArrayOfNumbers 有上百万个数字,而且只有最后一个是素数(事先并不知道),这样的做法还行。但是如果第一个就是素数呢?或者第5个,第15个?本可以早点结束这个计算,却需要挨个检查近百万个数字!听起来就很累。其实,当找到目标值后,就可以立刻使用 break 语句来结束循环:

let firstPrime = null;
for(let n of bigArrayOfNumbers) {
    if(isPrime(n)) {
        firstPrime = n;
        break;
    }
}

如果循环写在一个方法中,可以用 return 语句来替代 break