couchDb의 자바 스크립트 코드에서 배열의 값을 검색하는 for 루프가 있습니다. 나는 그것을 기능으로 만들고 싶다. 이것은 매우 간단해야하지만 나는 그것에 문제가 있습니다. 이것은 (완벽하게 잘 작동한다) for 루프입니다 :자바 스크립트에서 for 루프 함수를 선언하십시오.
if (newDoc.destination && newDoc.destination.length > 0) {
for (var i = 0; i < newDoc.destination.length; i++) {
if (newDoc.destination[i].address) return;
}
}
throw({forbidden: 'doc.address is required'});
을 그리고 이것은 내가 함수에 싸서 방법입니다 :
function arrayReq(field, message) {
message = message || "Array must have a " + field;
if (newDoc.destination && newDoc.destination.length > 0) {
for (var i = 0; i < newDoc.destination.length; i++) {
if (newDoc.destination[i].field) return;
}
}
throw({forbidden: message});
}
내가 함수의 반환이를 중지해야한다고 생각합니다 기능은 더 이상 진행되지 않지만 여전히 오류가 발생합니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까? Btw 내가 주소로 필드를 변경하면 잘 작동합니다. 주소를 변경 가능한 변수로 만들 수 없습니까?
*에
array.destination[i].field
에서 변경봅니다 "나는 함수에서 반환이 더가는 기능을 중지해야한다고 생각하지만, 여전히 오류가 발생합니다."* 그것은 않습니다. 'newDoc.destination [i] .field'가 사실이라면, 그 함수는 결국'throw'에 도달하지 않을 것입니다. 문제는 다른 곳에서 발생합니다. –
주 :'throw'는 함수가 아니므로'()'에 피연산자를 래핑 할 필요가 없습니다. 그런데, 당신이 좋아하는 어떤 객체라도 던질 수는 있지만, 일반적으로'Error'의 인스턴스를 던지는 것이 최상입니다. –
http://stackoverflow.com/questions/4244896/dynamically-access-object-property-using-variable의 사본으로 폐쇄되어야합니다. –