내가 작업중 인 큰 프로젝트 (의사 코드)에서 다음 루프 주석을 발견했습니다.
var someOtherArray = [];
for (var i = 0, n = array.length; i < n; i++) {
someOtherArray[i] = modifyObjetFromArray(array[i]);
}
내가 주목 한 것은이 여분의 "n"변수입니다. 나는 이런 식으로 작성된 lop을 본 적이 없다.
분명히이 시나리오 에서이 코드를 다음과 같은 방식으로 작성할 수없는 이유는 없습니다 (매우 익숙합니다).
var someOtherArray = [];
for (var i = 0; i < array.length; i++) {
someOtherArray[i] = modifyObjetFromArray(array[i]);
}
그러나 나는 생각했다.
그러한 for 루프를 작성하는 것이 의미가있는 시나리오가 있습니까? for 루프 실행 중에 "배열"길이가 변경 될 수 있지만 원래 크기보다 더 루프를 반복하고 싶지는 않지만 그러한 시나리오는 상상할 수 없습니다.
OutOfBoundsException이 발생할 가능성이 높으므로 루프 내부에서 배열을 축소하는 것도 의미가 없습니다.
이 주석이 유용한 알려진 디자인 패턴이 있습니까?
편집 @ Jerry101이 지적한 바와 같이 그 이유는 성능입니다. : 여기가 생성 한 성능 테스트에 대한 링크입니다 http://jsperf.com/ninforloop가 . 내 의견으로는 당신이 매우 큰 배열을 반복하지 않는 한 차이는 충분히 크지 않습니다. 내가 복사 한 코드는 최대 20 개의 요소 만 가지고 있었 으므로이 경우 가독성이 성능 고려 사항보다 중요하다고 생각합니다.
n
사용하는 변형이 사용하는 변형보다 느릴 수 있습니다 array.Length
.