2 분 소요

일반함수

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>콜백함수-1(일반함수 풀이)</title>
    <script>
        //일반함수를 사용하게 되면 로직구현, 로직처리 부분까지 아래와 같이 
        //있으므로 코드의 중복도 있고 기능이 합쳐저 있기 때문에 유지보수에도
        //좀 어려움이 존재할 것이다.
        function calculator1(op, num1, num2) {
            //로직 구현부
            var result = "";
            switch(op){
                case "+" :
                    result = num1 + num2;
                    break;
                case "-" :
                    result = num1 - num2;
                    break;
                case "*" :
                    result = num1 * num2;
                    break;
                case "/" :
                    result = num1 / num2;
                    break;
                default :
                    result = "지원하지 않는 연산자임!";
            }
            //로직 처리부분
            document.write("주어진 2개의 수의 연산결과 : " + result + "<br/>");
        }
        //일반 함수
        function calculator2(op, num1, num2) {
            var result = "";
            switch(op){
                case "+" :
                    result = num1 + num2;
                    break;
                case "-" :
                    result = num1 - num2;
                    break;
                case "*" :
                    result = num1 * num2;
                    break;
                case "/" :
                    result = num1 / num2;
                    break;
                default :
                    result = "지원하지 않는 연산자임!";
            }
            document.write("정답 : " + result + "<br/>");
        }
        calculator1("-", 500, 300);
        calculator2("*", 500, 300);
    </script>
</head>
<body>
    
</body>
</html>

image

콜백함수


<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>콜백함수-2(콜백함수 풀이)</title>
    <script>
        //매개변수로 callback이 들어와서 결과값을 callback함수에 매개변수로 하여
        //또 다른 함수를 호출하게 한다.
        var result = "";
        function calculator(op, num1, num2, callback) {
            //로직 구현부
            switch(op){
                case "+" :
                    result = num1 + num2;
                    break;
                case "-" :
                    result = num1 - num2;
                    break;
                case "*" :
                    result = num1 * num2;
                    break;
                case "/" :
                    result = num1 / num2;
                    break;
                default :
                    result = "지원하지 않는 연산자임!";
            } 
            //콜백함수 호출하고 있다.
            callback(result);  
        }
        //각각 로직 처리 부분을 함수로 만들었다.
        function print1(result){            
            document.write("print1 주어진 두 수의 연산 결과 : " + result + "<br/>");
            //print2(result,print3);
        }
        function print2(result){
            document.write("print2 정답 : " + result + "<br/>");            
            //callback(result);
        }
        function print3(result){
            document.write("print3 결과 : " + result + "<br/>");
        }
        //로직 구현 부분은 하나로 가져간 형태이고 로직 처리 부분은 3가지로
        //나눠서 만들었다.콜백함수의 장점은 위와 같이 구현, 처리하는 부분을
        //분리해둠으로써 유지보수 편리하고 아울러 가독성도 좋다.
        calculator("-", 500, 300, print1);        
        calculator("-", 500, 300, print2);        
        calculator("-", 500, 300, print3); 
    </script>
</head>
<body>
    
</body>
</html>

image

콜백함수


<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>콜백함수-3(콜백함수 풀이)</title>
    <script>
        //콜백 함수를 선언하고 호출하는 형태
        function add(n1, n2, callback){
            var temp = n1 + n2;
            callback(temp);
            document.write("add()함수" + temp + "<br/>");
        }
        function result(value){
            document.write("result()함수 결과 : " + value + "<br/>");
        }        
        add(50, 100, result);
    </script>
</head>
<body>
    
</body>
</html>

image

댓글남기기