2017-10-27 6 views
0

개체 배열 (students3)을 사용하여 학생의 이름과 평균 테스트 점수를 인쇄하는 함수를 작성했습니다. JavaScript : 정의되지 않은 값 얻기

var students3 = [ 
 
    { 
 
    name : "Anthony", 
 
    id : 0, 
 
    grades : [{ id : 0, score : 84},{ id : 1, score : 20},{ id : 2, score : 80}] 
 
    }, 
 
    { 
 
    name : "Winnie", 
 
    id : 1, 
 
    grades : [{ id : 0, score : 62},{ id : 1, score : 56},{ id : 2, score : 100}] 
 
    }, 
 
    { 
 
    name : "Pawandeep", 
 
    id : 2, 
 
    grades : [{ id : 0, score : 79},{ id : 1, score : 92},{ id : 2, score : 49}] 
 
    } 
 
];
내 솔루션 : console.log(printAverageGrade(students3));을 실행 한 후

function getAverageScore(student) 
 
{ 
 
    var sum = 0; 
 
    var grades = student.grades; 
 
    for(var i = 0; i < grades.length; i++) 
 
    { 
 
    var grade = grades[i]; 
 
    sum += grade.score; 
 
    } 
 
    var avg = sum/grades.length; 
 
    return avg; 
 
} 
 

 

 
function printAverageGrade(students) 
 
{ 
 
    for(var i = 0; i < students.length; i++) 
 
    { 
 
    var student = students[i]; 
 
    var averageScore = getAverageScore(student); 
 

 
    console.log(student.name, averageScore); 
 
    } 
 
}

예상 결과는 다음과 같습니다

안토니 61.333333333333336

위니 72.66666666666666

Pawandeep 73.33333333333333

내 결과 :

앤서니 61.333333333333336

위니 72.66666666666666

Pawandeep 73.33333333333333

정의되지 않은 내 결과에서 정의되지 않은 값을 받고있는 이유

사람이 나를 알 수 있습니까? 고맙습니다.

+0

정의되지 않았습니다. 그것은 당신의 코드를 잘 보인다. –

+0

최신 크롬에서는 정의되지 않습니다. 귀하의 코드는 괜찮아 보입니다. – RDev

+0

@dinesh https://repl.it/NTdT/0 – kunjuwang

답변

1

printAverageGrade 기능 자체는 메시지를 콘솔에 기록합니다. return 문이 없으므로 undefined을 반환합니다.

printAverageGrade(students3)을 콘솔에 기록하면 undefined으로 기록됩니다.

해결 방법 : printAverageGrade(students3)를 기록하지 않습니다

console.log(printAverageGrade(students3)) 마지막 줄은 함수의 반환 값임을

1

printAverageGrade(students3) →. getAverageScore(student) 함수를 보면 return avg;이라는 값을 얻을 수 있습니다.

printAverageGrades 아무 것도 반환하지 않으므로 반환 값은 undefined입니다. 콘솔 로깅은 작동하지만, 변수를 설정하기 위해 사용하지 않는 한이 코드는 문제가되지 않습니다.

0

브라우저의 JavaScript 콘솔에서 실행중인 경우 반환 값 printAverageGrade이 표시되지 않습니까?우리는이 대신하려고하면

> function foo() { console.log("hello"); } 
<- undefined 
> foo() 
    hello 
<- undefined 

이 두 undefined는 즉시 명령의 반환 값을 인쇄하려고 콘솔에서, 그리고 :이 간단한 예제를 참조하십시오

> function foo() { console.log("hello"); return "defined"; } 
<- undefined 
> foo() 
    hello 
<- "defined" 

을 특히, 당신의 샘플 코드 사용 :

console.log(printAverageGrade(students3)); 

printAverageGrade()은 아무 것도 반환하지 않으므로 콘솔 로그 undefined.