Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

항해일지

[TIL]온보딩 스터디 Day 04 (함수) 본문

항해99/TIL

[TIL]온보딩 스터디 Day 04 (함수)

효환 2023. 3. 9. 22:06

 

함수

스크립트를 작성하다 보면 유사한 동작을 하는 코드가 여러 곳에서 필요할 때가 많습니다.
사용자가 로그인이나 로그아웃을 했을 때 안내 메시지를 보여주는 동작 같은 경우 말이죠.
함수는 프로그램을 구성하는 주요 '구성 요소(building block)'입니다. 함수를 이용하면 중복 없이 유사한 동작을 하는 코드를 여러 번 호출할 수 있습니다.
우리는 앞서 다양한 예시에서 alert(message), prompt(message, default), confirm(question)과 같은 내장 함수를 사용해 보았습니다. 이번 챕터에선 함수를 직접 만드는 방법에 대해 알아보겠습니다.
 
 

함수 선언

 function showMessage(매개변수를 받을수 있는 자리) {
        alert( '안녕하세요!' );                                          
 }

함수를 선언하면 블럭에 상관없이 사용할수있다.

 

 

함수 표현식 [ 앞에 변수로 함수를 할당한다]

        let sayHi = function () {
            alert("Hello");
        };

함수 표현식은 앞에 변로수 할당 받기에 함수를 선언한 후 아래에 사용 할수있다.

 

 

화살표 함수 


        let sum = (a, b) => a + b;

        /* 위 화살표 함수는 아래 함수의 축약 버전입니다.
       
        let sum = function(a, b) {
          return a + b;
        };
        */

        alert(sum(1, 2)); // 3

 

함수를 값처럼 전달하는 예시, 함수 표현식에 관한 예시를 좀 더 살펴보겠습니다.
매개변수가 3개 있는 함수, ask(question, yes, no)를 작성해보겠습니다. 각 매개변수에 대한 설명은 아래와 같습니다.
question질문yes"Yes"라고 답한 경우 실행되는 함수no"No"라고 답한 경우 실행되는 함수
함수는 반드시 question(질문)을 해야 하고, 사용자의 답변에 따라 yes()no()를 호출합니다.
        function ask(question, yes, no) {
            if (confirm(question)) yes()
            else no();
        }
        function showOk() {
            alert("동의하셨습니다.");
        }
        function showCancel() {
           alert("취소 버튼을 누르셨습니다.");
        }
        // 사용법: 함수 showOk와 showCancel가 ask 함수의 인수로 전달됨
        ask("동의하십니까?", showOk, showCancel);

함수 안에서 다른 함수를 호출 하는게 콜백 함수

 

 

함수 정의 방법과 상관없이 함수에 넘겨주는 인수의 개수엔 제약이 없습니다.
아래와 같이 말이죠.
        function sum(a, b) {                               
            return a + b;
        }
        alert(sum(1, 2, 3, 4, 5));

 

 

이와 같이 모든 인자를 받을때 나머지 나머지 매개변수를 사용한다.

        function sumAll(...args) { // args는 배열의 이름입니다.
            let sum = 0;
            for (let arg of args) sum += arg;
            return sum;
        }
        alert(sumAll(1)); // 1
        alert(sumAll(1, 2)); // 3
        alert(sumAll(1, 2, 3)); // 6

 

 

 

 

 

 


느낀점

 

 

오늘로 항해4일차 배멀미를 하나보다. 코드를 보니 슬슬 어지럽다.함수에 대해 아주 모르는것은 아니였으나 기본기가 많이 모자랐던거 같다. 교제와 부교제를 보면서 문제를 푸니까 많이 어렵지는 않았으나 머리에 많이 들어오지를 않는다. 본과정에 들어가기 전까지 복습이 많이 필요하다.아직 반복문에 대해서도 많이 모자란거같다. 교제에 의지하지 않고 문제를 푸는법을 익혀야 할거같다. 오늘은 자책하는 시간을 가져본다. 다음주 알고리즘 과정이 끝나고 나서부터는 자료에 의지하지 않고 내지식으로 코딩을 쓱쓱 잘 할수있게 될수있게 노력해야겠다.

 

Comments