본문 바로가기
javaScript/J Query & 스크립트

함수기능 소개

by mooyou 2019. 4. 18.
728x90
300x250

1. 중복코드 제거해주고 코드를 재사용할수 있게 해준다

2. 구조를 나눌수 있다.

    - 기능별로 함수를 만들어서 구분해줄수 있다.

예를 들어서 슬라이드를 만든다면

기능1 - 오토플레이 시작, 기능2 - 오토플레이 멈추기, 기능3- 이전 이미지 보이기, 기능 4- 다음 이미지 보이기

이런식으로나눌수 있다

이걸 만약에 하나의 함수에 구현하면 나중에 문제 있는 코드를 찾거나 재사용하기가 힘들어진다.

 

함수와 반복문의 차이

함수 : 특정 기능을 하는 일종의 로직을 다시 재사용하는 기능으로 필요할때 언제든지 함수를 호출해서 사용할수 있다.

반복문 : 특정 구문을 반복해서 사용할때 사용하는 기능으로 한번 사용하면 다시 재사용할수 없고 다시 사욜하려면 복사해서 사용해야 한다.

 

함수만드는 방법

1. 중복코드 제거및 코드 재사용하기

 

단계1 : 중복코드 또는 재사용코드를 찾아서 함수로 포장하기

먼저 코드중에서 중복되거나 재사용될만한 코드가 있는지 찾아서 포장해준다

 

단계2: 중복코드중에서 변경되는부분과 변경안되는 부분을 나눠서 파악한다

 

단계3 : 변경되는 부분들은 매개변수로 만들어준다

변경되지 않는 부분은 몸통이고 변경되는 부분은 지역변수와 매개변수로 만들어진다. 이 중에서 함수 실행 시에 외부에서 값을 변경해야 하는 경우는 매개변수로 만들어 주면 된다.

 

예제) 홀수 인지 짝수인지 구분하는 예제를 함수로 만들어보자

        <script>

            // 풀이 전 코드
            var n1 = 5;
            document.write(n1 + "은 ");
            if (n1 % 2)
                document.write("홀수입니다.<br>");
            else
                document.write("짝수입니다.<br>");

            var n2 = 10;
            document.write(n2 + "은 ");
            if (n2 % 2)
                document.write("홀수입니다.<br>");
            else
                document.write("짝수입니다.<br>");

            var n3 = 13;
            document.write(n3 + "은 ");
            if (n3 % 2)
                document.write("홀수입니다.<br>");
            else
                document.write("짝수입니다.<br>");

        </script>

ⓐ 위에 코드의 중복되는 부분을 하나로 포장하기

        <script>

            function checkEvenOdd() {
                var n1 = 10;
                document.write(n1 + "은 ");
                if (n1 % 2)
                    document.write("홀수입니다.<br>");
                else
                    document.write("짝수입니다.<br>");
            }
            

            checkEvenOdd();
        </script>

ⓑ 변경되는 부분과 안되는 부분 파악하기

ⓒ 변경되는 부분 매개변수로 만들기

        <script>

            function checkEvenOdd(value) {
              
                document.write(value + "은 ");
                if (value % 2)
                    document.write("홀수입니다.<br>");
                else
                    document.write("짝수입니다.<br>");
            }
            

            checkEvenOdd(5);
            checkEvenOdd(10);
            checkEvenOdd(13);
        </script>

 

2. 코드 그룹화

함수는 오직 한가지 일만해야 한다는 원칙만 따르면 간단하다

단계1 : 여러가지 기능을 하는 함수 찾기

 

단계2 : 함수나누기

기능 개수만큼 함수를 신규로 만들고 각각의 기능을 함수에 담아서 포장해준다.

 

예제) 함수나누기

ⓐ 여러가지 기능을 하는 함수 찾아보기

        <style>
            body {
                font-size: 9pt;
            }
            #panel {
                width: 600px;
                height: 500px;
                border: 1px solid #999;
                position: relative;
            }

            #fish {
                position: absolute;
                left: 50px;
                top: 120px;
            }

            #nav {
                text-align: center;
                width: 600px;
            }
        </style>

        <script>

            // 풀이 전 코드
            $(document).ready(function() {

                // 물고기 노드 구하기.
                var $fish = $("#fish");

                // 버튼에 이벤트 걸기.
                $("#btnStart").click(function() {

                    // 물고기 움직이기.
                    // 물고기 위치 값 구하기
                    var x = parseInt($("#txtX").val());
                    var y = parseInt($("#txtY").val());

                    if ((x >= 0 && x <= 500) && y >= 0 && y <= 300) {

                        $fish.css({
                            left : x,
                            top : y
                        });

                    } else {

                        alert("입력된 값이 너무 큽니다. 다시 입력해주세요.");
                    }
                });
            })

        </script>
    </head>

    <body>
        <div>
            <div id="panel">

                <img src="fish.png" id="fish">
            </div>

            <div id="nav">
                <label>x값 입력 : </label>
                <input id="txtX"> </input>
                <br>
                <label>y값 입력 : </label>
                <input id="txtY"> </input>
                <br>
                <button id="btnStart">
                    물고기 움직이기
                </button>

            </div>
        </div>
    </body>

   ① 물고기 생성및 초기화

   ② 이벤트 처리

   ③ 물고기 움직임

 

ⓑ 함수나누기

        <script>

            // 전역변수 선언
            var $fish = null;

            $(document).ready(function() {
                init();
                initEvent();
            });

            // 전역변수 초기화
            function init() {
                $fish = $("#fish");
            }

            // 이벤트 초기화 하기
            function initEvent() {
                $("#btnStart").click(function() {
                    // 물고기 위치 값 구하기
                    var x = parseInt($("#txtX").val());
                    var y = parseInt($("#txtY").val());
                    // 물고기 움직이는 함수 호출
                    moveFish(x, y);
                });
            }

            // 물고기 움직이기
            function moveFish(x, y) {
                if ((x >= 0 && x <= 500) && y >= 0 && y <= 300) {
                    $fish.css({
                        left : x,
                        top : y
                    });

                } else {
                    alert("입력된 값이 너무 큽니다. 다시 입력해주세요.");
                }
            }

        </script>

 

1_물고기 노드를 저장할 변수를 전역변수로 만들어준다
2_init()함수를 신규로 만든 후 기존 코드 내용에서 물고기 노드를 찾는 코드를 옮겨준다
3_moveFish() 함수를 신규로 만든 후 기존 코드 내용에서 물고기 위치 설정하는 코드를 옮겨준다.
4_initEvent()함수를 신규로 만든 후 기존 코드 내용에서 버튼에 이벤트 등록하는 코드와 물고기 위치 값을 구하는 코드를 만들어 준다.
5_물고기를 움직이기 위해 moveFish()함수를 호출
6_마지막으로 시작부분에 init(),initEvent()함수를 호출

728x90
반응형

댓글