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

내 'forEach' 함수가 JavaScript에서 '정의되지 않음'을 반환하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-11 17:06:031007검색

Why Does My `forEach` Function Return `undefined` in JavaScript?

forEach 반환이 정의되지 않은 함수

원본 코드:

제공된 코드는 함수를 정의합니다. , getByKey, 특정 값에 대한 객체 배열을 검색하고 해당 키 또는 값을 찾을 수 없다는 메시지입니다. 그러나 함수는 지속적으로 정의되지 않은 값을 반환합니다.

function getByKey(key) {    
    data.forEach(function (i, val) {
        if (data[val].Key === key) {
            return data[val].Key;
        } else {
            return "Couldn't find";
        }
    });
}

문제 이해:

이 코드의 문제는 forEach 루프 내의 반환 문의 범위에 있습니다. . return 문은 getByKey 함수 자체가 아니라 루프를 종료합니다. 함수에서 값을 반환하려면 루프 외부에 배치해야 합니다.

해결책:

이 문제를 해결하는 한 가지 방법은 반환 값을 변수를 루프 내부에 넣은 다음 함수에서 반환합니다.

function getByKey(key) {
    var result;
    data.forEach(function (val) {
        if (val.Key === key) {
            result = val.Key;
        }
    });
    return result;
}

또는 대신 일반 for 루프를 사용할 수도 있습니다. forEach를 실행하고 루프 내의 함수에서 직접 반환합니다.

function getByKey(key) {
    for (var i = 0; i < data.length; i++) {
        if (data[i].Key === key) {
            return data[i].Key;
        }
    }
}

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

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