ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CODECADEMY] 코드카데미 : JavaScript 함수(Function : 함수 매개변수와 인자 /디폴트 매개변수 / Return / 도우미함수 Helper / 함수 표현식 / 화살표 기능 / 함수 간소화)
    Java Script 2020. 6. 15. 14:42

     

    1. Function의 이해

     

     

    짜여진 JavaScript 들을 정리해주는 수잡장 역할.

    하나의 값을 바꾸려 하는데 반복되는 코드들이 100개가 있다면? 

    100개를다 수작업으로 바꾸기 힘들다. 

     

    반복되는 코드들을 function으로 묶고

    불러오는 방법을 이용하기. 


    1-1. Function의 구성

     

    https://www.codecademy.com/

     

    1. function키워드.
    2. 함수 이름 또는 식별자와 괄호()로 묶습니다.
    3. 함수 본문 또는 특정 작업을 수행하는 데 필요한 명령문 블록은 함수의 중괄호로 묶습니다 { }.

     


    1-2. Function 호출

     

    https://www.codecademy.com/

    function의 이름(identifier)하고 (); 하면

    function 안에 저장 되었던 실행문이 실행된다. 

     


    1-3. 함수 매개변수와 인자 (Function Parameters and Arguments)

     

    함수에서 실행되는 선언문이 항상 동일한 문장이 아니라 

    그 중에 어딘가가 계속 바뀌어야 한다면, 

    매개변수를 이용해서 바뀌는 변수의 이름을 지정하고

    인자를 통해 바뀌는 변수의 이름의 값을 넣어주어

    변수의 이름이 계속 바뀌더라도 간단하게 불러올 수 있다.

     

     

    https://www.codecademy.com/

     

    https://www.codecademy.com/

    매개변수(parameter)함수 선언 안에 나열된 이름(names)

    인자(arguments)​는 함수에서 넘겨 받은 실제 값(values)

     

     

    예시 : 구매고객들에게 '이름'넣어 감사인사 보내기

    function sayThanks(name) {
      console.log(`Thank you for your purchase ${name}! We appreciate your business.`);
    }
    
    sayThanks('Cole');
    
    // Print >> Thank you for your purchase Cole! We appreciate your business.

     

    매개변수 이름에 (name)을 넣고, 

    값을 불러올 때 인자 값에 고객의 성함을 넣으면

    고객의 성함이 포함된 감사인사가 완성됨.

     


    1-4. 디폴트 매개변수 (Parameter Defaults)

     

     함수를 호출할 때 매개변수의 전달인자를 생략할 경우, 

    지정된 디폴트 값을 넣어서 함수를 호출하는 걸 말한다.

     

    function makeShoppingList(item1='milk', item2='bread', item3='eggs'){
      console.log(`Remember to buy ${item1}`);
      console.log(`Remember to buy ${item2}`);
      console.log(`Remember to buy ${item3}`);
    }
    
    makeShoppingList();
    
    
    //print 
    Remember to buy milk
    Remember to buy bread
    Remember to buy eggs

    위와 같이 인자를 안적었을 때, 디폴트 값이 나옴

     

     

    function makeShoppingList(item1='milk', item2='bread', item3='eggs'){
      console.log(`Remember to buy ${item1}`);
      console.log(`Remember to buy ${item2}`);
      console.log(`Remember to buy ${item3}`);
    }
    
    makeShoppingList('ice cream');
    
    //print 
    Remember to buy ice cream
    Remember to buy bread
    Remember to buy eggs

    item 1,2,3중에서 item 1의 값을 새로 지정 해서 불러왔을 경우

    새로 지정한 item 1값, 디폴트값(item2), 디폴트값(item3)

     


     

    1-5. Return

     

    코드카데미에 적힌 리턴 설명이 도저히 이해가 안가서

    구글링을 해봤는데도 도저히 이해가 안갔는데

    생활코딩 영상보고 감을 잡았다. 

     

    내가 생각한 return문의 의문점

    과연 왜 이게 필요한 것일까?

     

     

    1. console.log 로 출력할 수 있다. 

    function monitorCount(rows, columns) {
      console.log(rows*columns);
    }
    monitorCount(5,4);
    
    // print >> 20

    우리가 지금까지 배워왔던 JS의 함수 출력 할때

    위와 같이 사용했다. 

     

    하지만 출력할 때, monitorCount로만 출력이 된다면

    다양한 다른 형태로 출력할 수 없는 등의 제약이 생김

     

    그래서 function 함수 안에있는 console.log를 return으로 바꾸고, 

    console log로 출력해 준다 .

     

    function 
    monitorCount(rows, columns){
      return rows * columns
    }
    const numOfMonitors = monitorCount(5,4);
    console.log(numOfMonitors);
    
    // print>>20

     

     

    2. 함수를 종료 시킨다. 

    function 
    monitorCount(rows, columns){
      console.log(a)
      return rows * columns
      console.log(b)
    }
    const numOfMonitors = monitorCount(5,4);
    console.log(numOfMonitors);
    
    //print 
    a
    20

      분명 

     

    console.log(a)

    return rows * columns

    console.log(b)

     

    를 출력하였는데

    return 의 출력값 까지만 나왔다. 

    return문을 만나는 즉시 함수는 실행이 종료된다. 

      

    따라서 아래와 같이 if문과 함깨 응용이 가능 함

     

    function rectangleArea(width, height) {
      if (width < 0 || height < 0) {
        return 'You need positive integers to calculate area!';
      }
      return width * height;
    }
    
    console.log(rectangleArea(-1,-2));
    
    //print >> 
    You need positive integers to calculate area!
    function rectangleArea(width, height) {
      if (width < 0 || height < 0) {
        return 'You need positive integers to calculate area!';
      }
      return width * height;
    }
    
    console.log(rectangleArea(3,4));
    
    // print >> 12

     

     


     

    1-6. 도우미함수 Helper 

     

    다른 함수 내에서 함수의 반환 값을 사용하고 싶은 경우

    예 ) 한 학급에 모니터가 필요함. 

    책상의 가로, 세로 개수를 이용해 학생 수를 구한 다음(함수1), 

    모니터의 총 가격을 확인하고 싶을 때(함수2)

    =

    함수 1의 값을 함수 2에적용해서 값을 출력해 내고 싶을 때 

     

     

    크고 어려운 작업을 수행하여 더 작고 관리하기 쉬운 작업으로 나눌 수 있는 장점이 있다. 

    function monitorCount(rows, columns) {
      return rows * columns;
    }
    
    function costOfMonitors (rows,columns){
      return 200*monitorCount(rows,columns)
    }
    const totalCost=costOfMonitors(5,4)
    console.log(totalCost)
    
    // print >> 4000

     


     

    1-7 함수 표현식 Function Expressions

     

    함수를 정의하는 또 다른 방법은 함수 표현식 을 사용하는 것 

    표현식 안에 함수를 정의하기 위해 function키워드를 사용할 수 있다.

    함수 표현식에서 함수 이름은 일반적으로 생략되며 

    이름이없는 함수를 익명 함수 (anonymous function)라 한다.

     

     

    https://www.codecademy.com/

    함수 선언과 달리 함수 표현식은 호이스트되지 않으므로 정의되기 전에 호출 할 수 없다.

     

    const plantNeedsWater = function(day){
      if (day==='Wednesday'){
          return true
      } else {
        return false
      }
    };
    console.log(plantNeedsWater('Tuesday'));
    
    //print >>  false

     

     


     

    1-8 화살표 기능 Arrow Functions (간결화한 함수 식)

     

    ES6 는 특별한 "뚱뚱한 화살표" 표기법  () => 을 사용하여

    함수를 작성하는 더 짧은 방법 인 화살표 함수 구문을 도입함.

     

    화살표 함수 function는 함수를 만들어야 할 때마다 키워드를 입력 할 필요가 없다.

    대신 먼저 내부에 매개 변수를 포함시킨 ( )다음 

    다음 과 같이 =>둘러싸인 함수 본문을 가리키는 화살표를 추가 { }하면 됨.

    const plantNeedsWater = (day) =>{
      if (day === 'Wednesday') {
        return true;
      } else {
        return false;
      }
    };
    

     

     

     

     


     

    1-9 더 간결한 화살표 기능 Concise Body Arrow Functions

    (더 더간결화한 함수 식)

     

     

    위의 화살표 기능으로 간결해진 함수식을

    더 간결하게 만든다. 

     

     

    https://www.codecademy.com/

    단일 매개 변수 만 사용하는 함수는 해당 매개 변수를 괄호로 묶을 필요가 없다.

    그러나 함수가 0 개 또는 여러 개의 매개 변수를 사용하는 경우 괄호가 필요함.

     


    https://www.codecademy.com

    한 줄로 구성된 함수 본문에는 중괄호가 필요하지 않는다. 

     중괄호가 없으면 해당 라인이 평가하는 모든 것이 자동으로 반환됨.

     블록의 내용은 화살표 바로 뒤에 와야 =>하며 return키워드를 제거 할 수 있다.

    =  암시 적 반환 ( implicit return )

     

     

    const plantNeedsWater = day =>  day === 'Wednesday' ? true : false;
    

     

    • 괄호 day 는 단일 매개 변수를 갖기 때문에 제거되었습니다.
    • { }함수는 단일 행 블록으로 구성되므로 중괄호 가 제거되었습니다.
    • return함수가 단일 라인 블록 구성 때문에 키워드가 제거되었다.

     

     

Designed by Tistory.