>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 `return`이 `forEach` 루프를 중단하지 않는 이유는 무엇입니까?

JavaScript에서 `return`이 `forEach` 루프를 중단하지 않는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-20 18:24:12851검색

Why Doesn't `return` Break a `forEach` Loop in JavaScript?

forEach 함수 내부의 return 동작 이해

JavaScript에서는 종종 forEach 함수 내 return 키워드의 동작에 대해 오해가 있습니다. . 이 문서에서는 의도된 사용법을 명확히 하는 것을 목표로 합니다.

다음 코드 조각을 고려하세요.

$('button').click(function () {
  [1, 2, 3, 4, 5].forEach(function (n) {
    if (n == 3) {
      // It should break out here and doesn't alert anything after
      return false;
    }
    alert(n);
  });
});

이 코드에서는 forEach 루프 내에서 return 문을 사용하여 반복을 조기에 중지합니다. 그러나 코드는 계속해서 배열의 후속 요소에 경고를 보냅니다. 왜 이런 일이 발생합니까?

forEach에서 return의 진정한 특성

일반적인 믿음과는 달리 forEach 함수 내의 return 문은 이전 버전과 다른 의미를 갖습니다. for 또는 while과 같은 루프 구성. forEach에서 반환은 루프의 조기 종료를 의미하지 않습니다.

Mozilla 개발자 네트워크 설명

공식 Mozilla 개발자 네트워크 문서에 따르면:

"예외를 발생시키는 것 외에는 forEach() 루프를 중지하거나 중단할 수 있는 방법이 없습니다. forEach() 메서드는 잘못된 도구입니다."

대체 접근 방식

루프의 반복을 조건부로 중지하는 것이 목표라면 대안이 있습니다. 사용 가능한 방법:

  • 간단 루프: 조기 종료를 위한 명시적 조건을 사용하여 전통적인 for 또는 while 루프를 만듭니다.
  • for...of 루프: 즉시 종료를 제공하는 for...of 루프를 활용합니다. break 문을 사용한 종료 기능.
  • Array.prototype.every(): 각 요소에 대해 조건을 지정하고 조건이 요소에 대해 false를 반환하면 루프를 조기에 중단합니다.
  • 기타 배열 메서드: some(), find() 및 findIndex()와 같은 다른 메서드도 있습니다. 특정 기준에 따라 루프를 중단하는 방법을 제공합니다.

위 내용은 JavaScript에서 `return`이 `forEach` 루프를 중단하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.