본문 바로가기

웹언어/자바스크립트 - ES6

[ES6강좌] 8강 JS Callback - 오쌤의 니가스터디

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Javascript Callback


- 콜백 함수는 다른 함수에 인수로 전달되는 함수를 의미합니다.

함수명(function(){});

//

함수명(함수명);

- 이 기술을 사용하면 함수가 다른 함수를 호출할 수 있습니다.

- 다른 함수가 완료된 후 콜백 함수를 실행할 수 있습니다.

 

 

 

 

1) 함수의 순서

- JS에서 함수는 호출된 순서대로 실행이 됩니다.

- 선언된 순서대로 실행되지 않습니다.

 

## 코드 보기1

- [ testFirst() ]를 먼저 호출해보겠습니다. 

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS - Callback</title>
    </head>
    <body>
        <script>
            function testFirst(){
                alert('첫번째 테스트'); 
            }
            function testSecond(){
                alert('두번째 테스트'); 
            }

            testFirst();
            testSecond();
        </script>
    </body>
</html>

 

 

 

## 결과 보기1

 

 

 

 

 

 

 

## 코드 보기2

- [ testSecond() ]를 먼저 호출해보겠습니다. 

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS - Callback</title>
    </head>
    <body>
        <script>
            function testFirst(){
                alert('첫번째 테스트'); 
            }
            function testSecond(){
                alert('두번째 테스트'); 
            }

            testSecond();
            testFirst();
        </script>
    </body>
</html>

 

 

 

## 결과 보기2

 

 

 

 

 

 

 

 

 

 

 

2) 함수의 순서 제어

- 때때로 함수를 실행할 시점을 제어하고 싶을 때가 있습니다. 

- 그래서 시점을 제어해보도록 하겠습니다.

 

 

## 코드 보기

- 아래 코드는 제곱을 구하는 함수를 만들고, 그것을 문서에 출력하는 함수도 만들도록 하겠습니다.

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS - Callback</title>
    </head>
    <body>
        <p id="test"></p>
        <script>
            //문서객체 선택
            const test = document.getElementById('test');

            function output(x){
                test.innerHTML = x;
            }
            function square(x){
                var calc = x * x;
                output(calc);
            }

            square(5);
        </script>
    </body>
</html>

- 우선적으로는 문서에 값을 출력하는 [ output() ]이라는 함수를 선언했습니다.

- 두 번째로는 제곱을 구하는 [ square() ]이라는 함수를 선언합니다. 그리고 그 내부에 [ output() ]함수를 호출하도록 지정했습니다.

- 그리고 마지막으로 [ square() ] 함수를 호출해줍니다. 이렇게 함수 내부에 호출하고 싶을 수도 있습니다.

- 하지만 위의 코드의 단점은 결과 표시를 막을 방법이 없다는 것입니다. 그래서 콜백 함수로 처리하면 가능하게 됩니다. 

 

 

## 결과 보기

- 결과가 잘 출력되는 것을 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3) 함수의 순서 제어

- 위에서 썼던 코드를 콜백 함수를 사용하여 실행되게 해 보겠습니다. 

- 콜백 함수라는 것은 다른 함수에 인수로 전달되는 함수입니다.

 

 

## 코드 보기

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS - Callback</title>
    </head>
    <body>
        <p id="test"></p>
        <script>
            //문서객체 선택
            const test = document.getElementById('test');

            function output(x){
                test.innerHTML = x;
            }
            function square(x, write){
                var calc = x * x;
                write(calc);
            }

            square(5,output);
        </script>
    </body>
</html>

- [ square() ] 함수에 매개변수를 [ write ]라고 추가해줍니다.  그리고 그것을 함수 내부에서 함수 호출로 사용해줍니다. 

- [ square() ] 함수를 호출할 때 [ output() ] 함수를 매개변수로 사용합니다. 이때 생략하면 출력되지 않고 계산만 합니다. 

 

 

## 주의사항

- 함수를 인수로 전달할 때 괄호는 사용하지 않는 것을 기억해주세요.

square(5,output); //맞음
square(5,output()); //틀림

 

 

## 결과 보기

- 결과가 잘 출력되는 것을 확인할 수 있습니다. 

 

 

 

 

** 마치며

- 위는 콜백 함수를 이해하기 위한 간단한 구문이었습니다.

- 콜백 함수가 잘 사용돼서 빛을 발하는 곳은 하나의 함수가 다른 함수를 기다려야 하는 비동기 함수입니다. 

- 다음 강좌에서 비동기 함수에 대해서 더 자세히 보도록 하겠습니다. 

 

 

 

 

 

 

 

 

 

 

728x90
반응형