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 중국어 웹사이트의 기타 관련 기사를 참조하세요!