본문 바로가기

자바스크립트/기초

함수(function)

함수(function)란 하나의 로직을 재실행 할 수 있도록 하는 것으로 코드의 재사용성을 높여준다.

 

- 작성한 코드를 여러 맥락에서 다시 사용할 수 있도록 하는 것

- 코드 작성 시간 감소

- 사용한 모든 맥락에서 모두 함께 변경 가능 ( 유지보수 용이 )

- 가독성이 좋아짐

 

함수의 형식

function 함수명 ([인자...[,인자]]){
		코드
        return 반환값
}

함수는 function 뒤에 함수의 이름이 오고, 소괄호가 따라온다. 소괄호에 인자라는 값이 차례로 들어오는데, 이 값은 함수를 호출할 때 함수의 로직으로 전달될 변수다. 인자는 생략할 수 있다. 함수를 호출 했을 때 실행하게 될 부분이 중괄호 안쪽에 온다.

 

예시)

function numbering(){   // 이것은
     document.write(1); // 함수를 정의한것
}						// 입니다

numbering(); // 함수는 괄호를 꼭 붙여줘야 호출할 수 있음 !
// { } 안의 값 출력
function numbering(){
	i = 0;
    while ( i < 10 ){
    	document.write(i)
        i += 1;
 	}
}
numbering(); 
numbering();
numbering();
numbering();
numbering();
numbering();
numbering();

///출력값 0123456

위의 예제 제일 하단에 numbering이라는 이름의 함수가 호출되고 있다.

 

함수가 없다면 ?

아래 예제를 보자. 0부터 9까지 5번 출력해야 한다면 어떻게 해야할까? 아래와 같이 해야 할 것이다.

var i = 0;
while(i< 10){
	document.write(i);
    i += 1;
}

var i = 0;
while(i< 10){
	document.write(i);
    i += 1;
}

var i = 0;
while(i< 10){
	document.write(i);
    i += 1;
}

var i = 0;
while(i< 10){
	document.write(i);
    i += 1;
}

var i = 0;
while(i< 10){
	document.write(i);
    i += 1;
}

 

만약 이것을 1000번을 해야 한다면? 그리고 그 내용을 수정해야 한다면? 화가 날 것이다.

함수를 사용한다면 이러한 문제를 현저히 줄일 수 있다. 아래의 예제를 보자. 결과는 같지만 로직은 단 한번만 등장한다.

 

function numbering(){
	var i = 0;
    while(i < 10){
    	document.write(i);
        i += 1;
    }
}

numbering();
numbering();
numbering();
numbering();
numbering();

하지만 이렇게 함수를 호출해도 1000번을 해야한다면 번거로울 것이다.

이럴 때 for문을 쓰면 편리하다.

function numbering(){
	var i = 0;
    while(i < 20){
    	document.write(i+"<br />"); // <br> 띄어쓰기도 넣었음
        i += 1;
    }
}

for (i = 0; i < 1000; i+=1){
	numbering();   /// 이 안에 함수의 수식을 넣어도 된다
    }
    
for (i = 0; i < 1000; i+=1){
	var i = 0;
    while(i < 20){
    	document.write(i+"<br />"); /// 이런식으로 ! 
        i += 1;						
    }
    }

 

for 문 안에 함수의 수식을 넣어도 되는 이유는 반복문도 함수와 마찬가지로 어떠한 코드, 어떠한 로직을 반복적으로 사용할 때, 재사용 할 때 사용할 수 있는 것이 반복문이기 때문.

반복문과 함수를 비교했을 때 서로의 효용이 다르다.

반복문 : 기계적으로 일정한 반복을 그 자리에서 실행할 때 의미가 있음

함수 :  반복적으로 실행되는 로직이 여러가지 맥락에서 반복되어서 사용해야 하는 경우에는 함수가 의미가 있는 것

 

반복문은 한곳에서 반복되는거지만, 함수는 여기저기에서 호출만 하면 반복적으로 필요한 맥락에서 호출해서 사용할 수 있다는 것.

 

함수의 재사용성이 중요 = 이 코드를 좋은 부품으로 만드는 것이 목표

 

입력과 출력

function: 기능, 작용

함수: 상자 함

                      

return

리턴이 등장하면 두가지 일을 한다
1. return의 함수를 종료시킨다.
2. 값을 함수의 출력값으로 반환함.

function bf_means(){
	return 'bryan'; // 
}

function best_friend(){
	return 'teo';
}

alert(bf_means());
alert(best_friend());
//결과값 : 'bryan'
//		  'teo'

function bf_means(){
   return 'bryan';
    return 'teo';
    return 'bf';
}
alert(bf_means());
// ? 결과값 : 'bryan' 그리고 끝
// ! 왜냐하면 return이 나오면 즉시 종료되어 첫번째 return이 배출되기 때문에
// 그 이후값들은 동작하지 않게됨

 

인자

function get_argument(arg){
	return arg; // arg = 매개변수 (parameter)
}

alert(get_argument(1));  //  arg = 1 = 인자 (argument)
alert(get_argument(2));  //  arg = 2 = 인자 (argument)

//

function get_argument1(arg){
	return arg*1000;
}

alert(get_argument(1));  //  arg = 1000
alert(get_argument(2));  //  arg = 2000
function get_arguments(arg1, arg2){
	return arg1 + arg2; 
}

alert(get_arguments(10,20)); // 10 + 20 = 30
alert(get_arguments(20,30)); // 20 + 30 = 50

함수를 정의 하는 다른 방법

numbering = function () {
	i = 0;
    while(i < 10){
    	document.write(i);
        i += 1;
    }
}
numbering();

///

(function (){
	i = 0;              //익명함수:
    while(i < 10){		//이름이 필요 없고 바로 실행해야 하는 경우에 사용
    	document.write(i);
        i += 1;
     }
 })(); 

함수는 코드의 재활용성을 높혀준다!!!!!

 

// 문자열을 인자로 받아서 느낌표를 붙여서 리턴 해주는 함수 bryanTeo가 있다.
// 함수 bryanTeo의 첫 번째 인자로 문자열 "Shut up"을 넣어서 호출하고, 그 결과값을 변수 word에 할당하기.
let word; 
 word = bryanTeo('Shut up')

function bryanTeo(word) {
  if (typeof word !== 'string') {
    return 'wrong type';
  } else {
    return word + '!';
  }
}
//결과값 'Shut up!'
반응형

'자바스크립트 > 기초' 카테고리의 다른 글

거짓같은 값 (falsy value)  (0) 2021.05.19
Math 객체  (0) 2021.05.19
반복문 break...그리고...continue...  (0) 2021.05.17
TIL_이것저것  (0) 2021.05.17
복합대입연산자  (0) 2021.05.15