뭔가를 찾기 위해서 루프를 실행했다면, 찾으려는 것을 이미 찾은 후에는 루프 바디를 계속 실행할 필요가 없습니다.
예를 들어 봅시다. 어떤 숫자가 소수(prime)인지 판단하는 작업은 CPU 부하가 비교적 높은 일 중 하나입니다.
숫자 수천개의 리스트에서 가장 앞에 있는 소수를 찾는다고 했을 때, 다음 코드는 일단 원하는 작업을 하기는 합니다.
let firstPrime = null;
for(let n of bigArrayOfNumbers){
if(isPrime(n) && firstPrime === null) firstPrime = n;
}
bigArrayOfNumbers에 들어 있는 숫자가 백만 개쯤 되고, 소수는 그 리스트의 마지막쯤에 있다면 이 방법을 써도 상관은 없습니다.
하지만 첫 번째 숫자가 소수였다면?
아니면, 다섯 번째나 열다섯 번째쯤 있었다면 어떨까요?
쓸모없는 작업을 백만번이나 한 셈입니다.
생각만 해도 힘이 빠지는 소리군요.
break 문을 쓰면 원하는 것을 찾은 즉시 루프에서 빠져나갈 수 있습니다.
let firstPrime = null;
for(let n of bitArrayOfNumbers){
if(isPrime(n)){
firstPrime = n;
break;
}
}
이 루프가 함수 안에 있었다면 break 대신 return 문을 써도 됩니다.