자바스크립트 임의배열을 매개변수로 받아 평균을 내는 함수 질문
var testarray=[3,2,1];
function avg(array){
for(var i=0;i<array.length;i++){
var sum;
sum += array[i];
}
return sum/array.length;
}
document.write(avg(testarray));
이런 식으로 특정 배열을 매개변수로 받아 평균값을 낸 뒤 출력하는 함수를 만들고싶었으나
출력이 안되던데..어디서부터문제인지 잘 모르겠어서요...
어떻게 해야 될까요?
return에 document.write(sum/array.length);
는 이미 해보았습니다
답변 2개 / 댓글 9개
var testarray=[3,2,1];
function avg(array){
for(var i=0;i<array.length;i++){
var sum;
sum += array[i];
}
return sum/array.length;
}
document.write(avg(testarray));
=>
var testarray=[3,2,1];
function avg(array){
var sum = 0; // 초기화가 안되서 오류가 나온겁니다.
for(var i=0;i<array.length;i++){
sum += array[i];
}
return sum/array.length;
}
document.write(avg(testarray));
var은 선언문이지 전역변수를 나타내지 않습니다.
JavaScript에서
변수는 선언을 안하면 전역변수로 사용되지만
선언을 하면 로컬변수가 됩니다.
{
}
범위의 영향을 받습니다.
중요한건 초기값이 없어서 그렇습니다.
for문 안에다가 선언하면
매번 초기화 되니 오류
답변에 대한 댓글 5개
공부하는 입장인데 플래토님 덕분에 도움 많이 되었네요^^
즐거운 하루 보내세요~
답글달고 저도 잠시 검색해봤습니다.
JavaScript의 변수 Scope
http://www.nextree.co.kr/p7363/
여기글이 잘설명되어있네요
지금은 못 읽고 퇴근하고 저녁에 꼭 보도록 하겠습니다.
감사합니다^^
일단 var sum 의 위치가 좀 문제가 있어보이네요.
var sum;
for(var i=0;i<array.length;i++){
sum += array[i];
}
이렇게 바꿔보세요
답변에 대한 댓글 4개
단지 문제가 좀 있어 보인다는 뜻이었습니다.
NaN 나온다니 아마 + 연산이 제대로 안되는듯 합니다.
sum = 0;
sum += ParseInt(arrary[i]);
이런식으로 해보시면 어떨까요?
따로 디버깅을 해본게 아니라서 확실하지는 않네요 ^^
죄송해요 ㅎㅎ..
그래도 나시님 덕분에 지식 얻고 갑니다 ㅎㅎ
답변을 작성하려면 로그인이 필요합니다.
저의 무지함에 탄복하고 갑니다.
역쉬 기본사용 방법을 지키는것은 의미가 있네요 ^^