채택완료

자바스크립트 임의배열을 매개변수로 받아 평균을 내는 함수 질문

2018-04-12 (목) 09:58:58 3,606

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개

채택된 답변
+20 포인트

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));

=>

Copy
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개

고수분이시군요..ㅠ.ㅜ
저의 무지함에 탄복하고 갑니다.

역쉬 기본사용 방법을 지키는것은 의미가 있네요 ^^
2018-04-12 (목) 10:29:42
자세한 답변 감사합니다.
공부하는 입장인데 플래토님 덕분에 도움 많이 되었네요^^
즐거운 하루 보내세요~
@나시 고수라니요..과찬이십니다. ^^
@ㅁㅇㅁㅇㅁㅇ 네 도운되셨다니 다행인에요
답글달고 저도 잠시 검색해봤습니다.

JavaScript의 변수 Scope

http://www.nextree.co.kr/p7363/

여기글이 잘설명되어있네요
2018-04-12 (목) 11:33:26
변수 범위 설명 링크까지 감사합니다.
지금은 못 읽고 퇴근하고 저녁에 꼭 보도록 하겠습니다.
감사합니다^^

일단 var sum 의 위치가 좀 문제가 있어보이네요.

  var sum;

  for(var i=0;i<array.length;i++){
    sum += array[i];
  }

이렇게 바꿔보세요

답변에 대한 댓글 4개

2018-04-12 (목) 10:10:22
NaN뜨네요
var는 전역변수라 어디에 써도 딱히 상관없지 않은거아니였나요?
딱히 상관은 없죠 ^^
단지 문제가 좀 있어 보인다는 뜻이었습니다.
NaN 나온다니 아마 + 연산이 제대로 안되는듯 합니다.
sum = 0;
sum += ParseInt(arrary[i]);
이런식으로 해보시면 어떨까요?

따로 디버깅을 해본게 아니라서 확실하지는 않네요 ^^
2018-04-12 (목) 10:30:51
답변은 감사합니다만 플래토님 채택했습니다
죄송해요 ㅎㅎ..
그래도 나시님 덕분에 지식 얻고 갑니다 ㅎㅎ
저도 배웁니다 ^^

답변을 작성하려면 로그인이 필요합니다.