이번시간에는 함수의 입력과 출력에 대해서 알아보자.
프로그래밍에서의 함수는 어떻게 입력을 받고, 어떻게 출력을 받을까?
먼저 출력에 대해서 알아보자.
출력은 return이라는 키워드를 사용한다.
하단의 예제 코드르 보자.
function get_member1(){
return 'estelar';
}
function get_member2(){
return 'hongjoo';
}
alert(get_member1());
alert(get_member2());
하나는 get_member1이라는 함수이고, 하나는 get_member2라는 함수이다.
그리고 함수 내부에는
return이란는 키워드가 있다.
함수 내부를 읽던 컴퓨터는 return을 읽으면 함수를 종료시킨다.
그리고 return 뒤에 있는 값을 함수 바깥쪽으로 뱉어낸다.
그리고 이 뒤에 어떤 코드가 있어도 실행되지 않는다.
따라서 위의 코드에서 alert 안의 함수는 return 값으로 바뀌고,
alert('estelar');
alert('hongjoo');
이를 실행시키면 순서대로 경고창에 estelar, hongjoo가 뜰 것이다.
그렇다면 return값이 여러개이면 어떻게 될까?
function get_member1(){
return 'estelar';
return 'hongjoo';
return 'mini';
return 'yesri';
}
이를 실행한 결과는 경고창에 estelar 하나만 나오고 끝난다.
왜냐면 컴퓨터가 처음에 return 이라는 키워드를 만나고 그 뒤에 있는 'estelar'를 함수 바깥으로 배출해주고
함수는 종료됐기 때문에 return뒤에 나오는 코드는 실행되지 않는다.
다음으로 입력에 대해서 알아보자.
코드를 살펴보자.
function get_argument(arg){
return arg;
}
alert(get_argument(1));
alert(get_argument(2));
우선 get_argument라는 함수가 있고, 괄호 안에 드디어 무언가가 등장했다. (arg)
그리고 return arg;가 있다.
괄호 안의 arg가 바로 입력과 관련되어 있는 것이다.
이 함수를 호출하는 곳을 살펴보면
get_argument(1) 이 보인다. 지금까지는 함수명(); 이렇게 호출 했는데 괄호 안에 무언가가 들어간 것이다.
이는 get_argument라는 함수를 호출할 때, 그 함수의 괄호 안에다가 숫자 1을 넣어준다는 뜻이다.
근데 숫자 1이 들어갈 위치에 지금 arg가 들어가있고, 이 arg는 변수가 된다.
내부적으로 arg = 1 이라는 뜻이 된다.
따라서 이 함수의 중괄호 안에서 arg는 숫자 1이 되는 것이다.
하단 코드에 있는 get_argument(2)도 마찬가지다. 내부적으로 arg = 2라는 뜻이 된다.
alert(get_argument(1));
alert(get_argument(2));
이를 실행시키면 경고창에 순서대로 숫자1이 뜨고, 2가 뜰 것이다.
그런데, 입력한 값을 그대로 출력하는 것은 효용이 크지 않다.
진정한 함수라면 입력갚에 따라 / 어떤 취지에 따라 계산된 결과가 출력돼야 한다는 것이 함수의 기본적인 목표이기 때문에 코드를 수정해보면,
만약 입력한 수의 1000배 되는 수를 return 하라고 한다면,
function get_argument(arg){
return arg*1000;
}
이렇게 코드를 입력 후 함수를 호출하면 된다.
여기서 arg는 매개변수(parameter)라 부르고,
매개변수로 전달된 값들 (1,2)들은 인자(argument)라고 불린다.
그런데, 입력과 관련해서는 몇가지 테크닉이 더 있다.
이번엔 복수의 인자, 여러개의 인자에 대해서 알아보자.
function get_arguments(arg1, arg2){
return arg1 + arg2
}
alert(get_arguments(10, 20));
아까와 달라진점은, 인자가 2개 있고, 매개변수도 2개 있는 것이다.
이를 자세히 보면
첫번째 인자 10은 arg1으로 가고, 두번째 인자 20은 arg2로 간다.
따라서 return arg1 + arg2를 계산해보면
이 함수는 30을 return하게 된다.
즉, 함수는 여러개의 인자를 입력받을 수 있지만 결과값, return은 한번밖에 할 수 없다.
마지막으로 함수를 정의하는 다른 방법을 알아보자.
var numbering = function (){
i = 0;
while(i < 10){
document.write(i);
i += 1;
}
}
numbering();
이를 해석해보면, numbering이라는 변수에 함수에 대한 정의 부분이 대입된 것이다.
따라서 numbering이라는 변수가 함수를 갖게 된 것이고,
우리는 numbering이라는 변수 뒤에 함수를 호출하는 기호 (): 를 붙이게 되면,
마치
function numbering (){
i = 0;
while(i < 10){
document.write(i);
i += 1;
}
}
numbering();
이렇게 함수를 정의한 것과 똑같은 효과이다.
또 이렇게 정의할 수도 있다.
function (){
i = 0;
while(i < 10){
document.write(i);
i += 1;
}
}
이렇게 이름붙이지도 않고, 변수도 없는 함수에 괄호를 붙이고, 그 함수를 호출하는 것이다.
(function (){
i = 0;
while(i < 10){
document.write(i);
i += 1;
}
})();
이렇게 하게 되면 함수를 정의하는 것과, 호출하는 것이 한번에 가능하며,
이를 익명함수라 한다. 보통 이름이 필요없고 바로 실행해야 할 때 이런 코드를 사용한다.
'IT 인터넷 > javascript' 카테고리의 다른 글
[javascript 언어공부] 배열(2) (0) | 2018.05.30 |
---|---|
[javascript 언어공부] 배열(1) (0) | 2018.05.30 |
[javascript 언어공부] 함수(1) (0) | 2018.05.29 |
[javascript 언어공부] 반복문(3) (0) | 2018.05.29 |
[javascript 언어공부] 반복문(2) - for문 (0) | 2018.05.29 |