>  기사  >  웹 프론트엔드  >  반복 함수 내에서 'return' 문을 사용해도 'forEach'가 '정의되지 않음'을 반환하는 이유는 무엇입니까?

반복 함수 내에서 'return' 문을 사용해도 'forEach'가 '정의되지 않음'을 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-10 09:28:03137검색

Why Does `forEach` Return `undefined` Even With a `return` Statement Inside the Iteration Function?

forEach를 사용하는 함수에서 정의되지 않은 반환 문제 해결

특정 함수는 forEach 메서드와 함께 사용하면 반환이 포함되어 있음에도 불구하고 정의되지 않은 반환을 반환할 수 있습니다. 성명. 이 동작은 return 문이 바깥쪽 함수 자체가 아니라 forEach에 전달된 반복 함수에 영향을 미치기 때문에 발생합니다.

예제 코드:

다음 함수를 고려하세요.

def get_by_key(key):
    data.forEach(function(i, val):
        if data[val].Key == key:
            return data[val].Key
        else:
            return "Couldn't find"
    )

이 함수를 호출하면 데이터 배열의 키 값이 반환될 것으로 예상할 수 있지만 지속적으로 정의되지 않은 값이 반환됩니다. 이는 return 문이 반복 함수 내부에 있기 때문에 get_by_key의 반환 값에 영향을 주지 않습니다.

해결책:

대응하는 두 가지 주요 방법이 있습니다. 이번 호:

1. 클로저 사용:

def get_by_key(key):
    found = None
    data.forEach(function(val):
        if val.Key == key:
            found = val
    )
    return found

이 솔루션에서는 반복 함수 외부에서 발견된 변수를 선언하여 클로저를 생성합니다. 이를 통해 반복 함수에 영향을 주지 않고 값을 반환할 수 있습니다.

2. for 루프 사용:

def get_by_key(key):
    for i in range(len(data)):
        if data[i].Key == key:
            return data[i]

더 작은 데이터 세트의 경우 간단한 for 루프가 forEach를 사용하는 것보다 더 효율적일 수 있습니다. 데이터 배열을 반복하고 찾은 값을 반환합니다.

추가 고려 사항:

  • 키를 반환하는 대신 전체 값을 반환할 수도 있습니다.
  • 반복 함수 내에서 break 문을 사용하면 키가 발견되면 루프를 일찍 종료하므로 성능이 향상될 수 있습니다.

위 내용은 반복 함수 내에서 'return' 문을 사용해도 'forEach'가 '정의되지 않음'을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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