본문 바로가기
Coding/Language - JavaSCript

JavaScript - 제5강

by 그냥그렇듯이 2017. 11. 12.
반응형

- 함수 -

함수는 프로그램 안에서 반복작업이나 계산을 한 덩어리로 묶은 것이다.

Lesson 1

unite2Message()함수

 두 개의 메세지를 줄을 바꿔서 표시한다.

alert('Hello World');

 함수는 오브젝트를 처리하는 메서드와 비슷하다.
함수의 처리의 내용물을 사용자가 만들 수도있다.


function unite2Message(Msg 1, Msg2)

{

   message = Msg1 + '\n' + Msg2;

   return message;

}


 function: 함수 선언
 unite2Message:  함수선언
return 함수 처리 종료하고 호출한 곳의 처리를 계속

함수는 함수 안에서의 처리에 필요한 정보를 호출한 곳으로부터 받을 수 있다. 이것을 인수 혹은 파라미터 라고 한다.=> Msg1, Msg2


function writeHello()

{

   document.write('Hello');

}


 인수가 필요 없을 때는 비워둔다.

Lesson 2


function funcNum(n)

{

   document.write("인수값은",n,"<br>");

}

a=10;

funcNum(5);

funcNum(a);


함수의 정의


함수의 호출 funcNum(5); 

 
function getMenu(a)
{

  a='Coffee';

}

b='Tea';

getMenu(b);

오브젝트 이외의 값을 인수로 전달할 때는 '값 전달'이라는 방식으로 전달한다.
함수 내부에서 인수의 값을 변경해도 함수 외부에 있는 b='Tea'값은 바뀌지 않는다. 


function getMenu(a)
{
    a[0] = 'Water';
}
b=new Array('Tea', 'Coffee');

getMenu(b);


 
오브젝트를 인수로 전달할 때는 참조 전달 방식으로 전달한다.

함수 내부에서 인수의 값을 변경 a[0]='Water' 하면, 외부에서도 값이 바뀐다. 

Lesson 3


a = 1;

function showNum()

{

var a;

a =1;

document.write(a);

}

showNum();

document.write(a);


함수 안에서 { } 안에 var를 붙여서 선언한 변수는 로컬변수(지역변수)이다. 지역변수는 그 변수를 선언한 함수 안에서만 사용할 수 있다

변수의 유효범위를 Scope라고 부른다.  


a =1;

function showNum()

{

   var a;

   a = 1;

   document.write(a);

}

showNum();

document.write(a);


글로벌 변수 혹은 전역변수는 함수ㅡ이 밖이나 안에서 참조나 변경을 할 수 있다.

함수 안에서 var를 붙이지 않고 변수를 사용하면 전역변수가 된다.

함수 안에서 글로벌 변수와 같은 이름의 변수를 선언한 경우 글로별 변수쪽이 더 유요하다. 한 함수 안에서는 같은 이름의 글로벌 변ㅅ를 사용할 수 없다.


scope.html

...

<script...>

a=1;

</script>

...

<script>

alert(a);

</script>

...

<script ... src="abc.js">

</script>


abc.js

document.write(a);


전역 변수는 선언한 파일뿐만 아니라 다른 파일에서도 사용할 수 있다. 


gawibawibo.html


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title>가위바위보</title>



  <script type="text/javascript" src="js/judgement.js"></script>

  <script type="text/javascript">


    var strMsg0 = "가위바위보 시작할까요?";


    function init()

    {

      if(!confirm(strMsg0)){

        document.getElementById("btnGawi").disabled=true;

        document.getElementById("btnBawi").disabled=true;

        document.getElementById("btnBo").disabled=true;

      }

    }


    function myChoice(gawibawiboUser){

      var strLocal = myResult(gawibawiboUser);

      alert(strLocal);

    }

  </script>

  </head>


  <body>

  <form name="form1" onload="init()">


  <input type = "button" id="btnGawi" onclick="myChoice(0)" value="가위">

  <input type = "button" id="btnBawi" onclick="myChoice(1)" value="바위">

  <input type = "button" id="btnBo" onclick="myChoice(2)" value="보">

  <br>

  </form>

  </body>

</html>

   

getElementById() 메서드 - id 속성을 붙인 요소를 추출한다.

disabled 프로퍼티 - 폼을 무효화한다. 

judgement.js

var strMsg1="비겼습니다.";

var strMsg2="이겼습니다.";

var strMsg3="무승부";


function myResult(gawibawiboUser){

  var gawibawiboComp = Math.floor(Math.random()*3);


  if(gawibawiboComp==gawibawiboUser)

    return strMsg1;

  else if((gawibawiboComp+1)%3 == gawibawiboUser)

    return strMsg2;

  else

    return strMsg3;

}


Math.floor(Math.random()*3);

Math.random() - 0이상 1 미만의 실수로 된 난수 발생한다.

Math.floor - 소수점 이하 절하한다.

Practice


1. 국어, 영어, 수학 성적을 인수로 받아 평균을 구하는 함수를 만들라.


 function testAverage(a,b,c,)

{

     avg = (a+b+c) / 3;

     return avg;

}

korean = 100;

english=100;

math=100;

average = parseInt(testAverage(korean, english, math));

document.write(average);


*parseInt()는 정수를 반환하고 소수점 이하는 버린다.

2. 5명 학생의 국어, 영어, 수학 성적의 평균과 과목별 평균을 구하라. 함수 및 배열 사용하라.





cntStudent = 5;

cntSubject =3;


function calcStudentAverage(k,e,m){

avg = parseInt((k+e+m)/cntSubject);

return avg;

}


function calcSubjectAverage(arr){

sum=0;

for(i=0; i<cntStudent; i++){

    sum+=arr[i];

}

avg = parseInt(sum/cntStudent);

return avg;

}


studentName = ["김ㅇㅇ", "박ㅇㅇ", "유ㅇㅇ", "진ㅇㅇ", "병ㅇㅇ"];

subject = ["국어", "영어", "수학"];

kor = [88, 99, 44, 55, 11];

eng = [88, 99, 33, 54, 12];

math = [44, 22, 33, 55, 66];


document.write("개인 평균 <br>");


for(i=0; i<cntStudent; i++){

  myAvg = calcStudentAverage(kor[i], eng[i], math[i]);

document.write(studentName[i] + "의 평균은" + myAvg+"점이다.<br>");

}

subAvg = new Array(0,0,0);

a=calcSubjectAverage(kor);

subAvg[0]=a;

a=calcSubjectAverage(eng);

subAvg[1]=a;

a=calcSubjectAverage(math);

subAvg[2]=a;


document.write("과목별 평균<br>");

for(i=0; i<cntSubject; i++){

document.write(subject[i]+"점수 평균은"+subAvg[i]+"점이다.<br>");

}




3. 다음 출력 값을 구하라.

a = 1;

function showNum()

{

    var a;

    a = 2;

    document.write(a);

}

showNum();

document.write(a);


 2

 1


댓글