[JavaScript] STUDY 8 - 함수

PSEveloper ㅣ 2020. 3. 12. 21:06

 

함수

 

1. 함수(Function), 메서드(Method)

  • 프로그램에서 특정 동작을 수행하는 일정 코드 부분
  • JavaScript에서 다루는 자료형 중 하나(string, num, boolean, function, object, undefined)
  • 하나의 큰 프로그램을 여러 부분으로 나누어 작성 가능
  • 같은 함수를 하나의 프로그램, 혹은 여러 프로그램에서 여러 차례 호출
  • 프로그램의 일부분을 수정하기 용이함
  • 코드의 재사용이 용이함

Input (Parameters) Function Output(Return value)

 

2. 함수의 선언

  • 필요한 함수를 작성하는 것
  • 함수를 어떻게 선언하느냐에 따라 "선언적 함수"와 "익명 함수"로 나뉠 수 있다.

① 선언적 함수

 

  • 함수의 식별자를 통해 호출할 수 있는 함수
  • 이러한 함수를 "익명 함수"와 상태되는 개념으로 "선언적 함수"라고 부른다.
  • 선언적 함수는 문장이 아니라 명령이므로 {} 뒤에 세미콜론(:)을 찍지 않는다.

     [선언적 함수의 예시]

     function hello () {

          document.writeln("Hello World!");

     }

 

② 익명 함수(anonymous function)

 

  • 변수를 선언한 후 함수를 대입할 수 있는데 이를 익명 함수(anonymous function)라고 한다.
  • 이 같은 경우네는 변수의 식별자가 함수의 식별자를 대신한다.
  • 그래서 익명 함수의 경우에는 함수의 식별자를 생략할 수 있다.
  • 익명 함수의 경우에는 뒤에 세미콜론(;)을 찍어야 한다.

     [익명 함수의 예시]

     var hello = function () {

          document.writeln("Hello World!");

     };

 

3. 함수의 호출

 

  • 함수의 식별자 뒤에 함수 호출 연산자 ()를 붙여서 함수를 호출할 수 있다.
  • 함수를 선언해놓은 곳으로 프로그램 실행 흐름이 이동하게 되고 함수의 본체에 있는 문장들을 실행한 후에 함수를 호출한 곳으로 되돌아온다.
  • 선언적 함수 → 선언적 함수는 함수의 호출 순서가 함수를 선언하기 전인지 후인지 상관없이 호출 가능하다.
  • 익명 함수 → 익명 함수는 변수가 선언되기 전에 호출하면 그 변수가 어떤 식별자인지 알 수 없으므로 오류!
  • 왜냐하면 함수는 function이라는 자료형의 값으로, 프로그램 코드의 집합이라는 값으로 취급할 수 있다. 따라서 변수에 대입할 수도 있고 변수는 선언되어야 사용할 수 있다. 따라서 함수를 변수에 대입해놓은 경우 변수를 선언하는 문장이 실행되어야 그 변수를 통해 함수를 호출할 수 있기 때문이다.

 

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width">
    <meta charset="utf-8">
    <title>11월 20일 배운 내용</title>
</head>
<body>
    <pre><script>

        // 선언적 함수이므로 함수가 선언되기 전에도 호출 가능
        hello();
        
        // 선언적 함수의 선언
        function hello () {
            document.writeln("Hello World!");
        }

	// 선언적 함수의 호출
        hello();

        // 익명 함수의 식별자이자 변수이므로 선언되기 전에는 호출할 수 없음
        sayMerong();			// WARNING!
        
        // 익명함수의 선언
        var sayMerong = function () {
            document.writeln("Merong!");
        };
        
	// 익명 함수가 선언된 후이므로 변수를 통해 함수를 호출할 수 있다.
        sayMerong();
        
     </script></pre>
</body>

</html>

 

 

실행 결과