2020-02-05 JavaScript - 함수

2020. 2. 5. 20:00·Today I learned

생활 코딩 강의를 들으면 내 나름대로 정리한 내용이다.

https://opentutorials.org/course/743/4729

 

함수 - 생활코딩

함수 함수(function)란 하나의 로직을 재실행 할 수 있도록 하는 것으로 코드의 재사용성을 높여준다. 함수의 형식 함수의 형식은 아래와 같다. function 함수명( [인자...[,인자]] ){ 코드 return 반환값 } 함수의 정의와 호출 함수는 function 뒤에 함수의 이름이 오고, 소괄호가 따라온다. 소괄호에 인자라는 값이 차례로 들어오는데 이 값은 함수를 호출할 때 함수의 로직으로 전달될 변수다. 인자는 생략 할 수 있다. 함수를 호출

opentutorials.org

// 함수 1강
함수(function)란 하나의 로직을 재실행할 수 있도록 하는 것으로 코드의 재사용성을 높여준다.0
재사용성 : 하나의 코드를 여러 맥락에서 다시 사용할 수 있다.
하나의 코드를 개선하면 여러 맥락에서 사용된 곳의 코드를 동시에 개선할 수 있다. 코드를 작성하는 시간도 줄여준다.

function 함수명( [인자 ...[, 인자]] ) {
  코드
  return 반환값
}


      function numbering() {
        document.write(1);
      } // 함수 정의 
      numbering( ); // 함수를 사용하기 위해서 함수를 호출해야 한다.


함수를 호출할 때 numbering( )이 아닌 numbering이라고 입력한다면
웹 브라우저는 numbering을 변수로 인식한다.
numbering( )이 호출되면 함수 내부에 있는 코드가 실행되는데, 
이때 numbering( )은 document.write(1)과 같은 효과를 낸다.

function numbering( ){
    i = 0;
    while(i < 10){
        document.write(i);
        i += 1;
    }   
}
numbering( );
numbering( );
numbering( );
numbering( );
i가 0부터 10보다 작을 때까지 i가 1씩 증가하며 화면에 i를 출력한다.

우리가 내부에서 i < 10을 i < 20으로 변경해준다면 함수의 재사용성 덕분에 함수를 호출한 모든 부분에 동시에 변경할 수 있다.

// 함수 2강 함수의 효용

함수 없이 i를 1부터 20까지 출력하는 것을 여러 번 반복하고 싶다면?
var i = 0;
  while(i < 20){
      document.write(i + '
');
      i += 1;
  }
위의 코드를 여러 번 Copy and Paste해야 할 것이다. 너무나도 번거롭다.
또한, i를 30까지 출력하는 것으로 바꾸고 싶다면 일일이 반복 조건을 수정해줘야 한다.

하지만 위의 코드로 동작하는 함수를 선언해준다면 함수 호출만으로 동일하게 동작할 수 있다.
또한, 반복 조건을 한 번만 수정해주면 된다.

function numbering( ){
    var i = 0;
    while(i < 20){
        document.write(i + '
');
        i += 1;
    }   
}
numbering( );
numbering( );
numbering( );
numbering( );
numbering( );

만약 함수 호출을 1000번 시키고 싶다면?
함수 호출을 일일이 1000번 하는 것 또한 너무나도 번거롭다.
이럴 때 반복문을 활용하면 된다.

function numbering( ){
    var i = 0;
    while(i < 20){
        document.write(i + '
');
        i += 1;
    }   
}

for(var i = 0; i < 1000; i++) }
  numbering( );
}

이렇게 반복문과 함수를 활용하여 간단히 1부터 20까지 출력해주는 함수를 1000번 호출해 줄 수 있다.

반복문과 함수가 없다면 도대체 얼마나 많은 양의 코드를 쳐야 할까? 또한 수정 사항이 있을 때 일일이 바꿔주는 데 얼마나 많은 시간이 걸릴까?

함수와 반복문은 없어서는 안될 존재들이다.

반복문은 기계적으로 일정한 반복을 그 자리에서 실행할 때 의미가 있다.
하지만 함수는 반복적으로 실행되는 로직이 필요한 여러 맥락에서 반복적으로 사용될 때 의미가 있다.

재사용성, 유지 및 보수의 용이함, 가독성 => 서로 뗄레야 뗄 수 없는 관계

// 함수 3강 함수의 입력과 출력
함수 : function
function은 기능, 작용을 의미한다.
함수 => 상자 함

함수의 핵심은 입력과 출력이다. 입력된 값을 연산해서 출력하는 것이 함수의 기본적인 역할이다.

출력에서는 return이라는 keyword를 사용한다.


  function get_member1( ) {
    return 'Ron';
  }
  function get_member2( ) {
    return 'Matt';
  }
  alert(get_member1( )); // Ron
  alert(get_member2( )); // Matt


각각의 alert창에는 Ron, Matt이 출력된다.
alert 내부에서 각각 get_member1, get_member2라는 함수를 호출한다.
함수가 호출되면 코드가 실행이 된다.
코드를 보면 return이 있다.
return은 함수가 실행될 때 출력값을 내보내준다.
출력값을 내보낸 채 함수는 종료된다.
get_member1, get_member2의 return 값은 각각 'Ron', 'Matt'이다.


  function get_member1( ) {
    return 'Ron';
    return 'Matt';
    return 'Susan';
  }
alert(get_member1( ));

alert 창에는 Ron이 출력된다.
alert 내부에서 get_member1 함수를 호출한다.
함수가 호출되면 코드가 실행이 된다.
3개의 return이 있다. 어떤 것이 실행될까?
첫번째 return의 'Ron'을 내보내고 함수는 종료된다.

함수는 return이 아무리 많이 있어도 첫 번째 return을 만나면 출력값을 내보내고 종료된다.

// 함수 4강 함수의 입력

  function get_argument(arg) {
      return arg;
  }

  alert(get_argument(3));
  alert(get_argument(5));


인자(argument)는 함수로 유입되는 입력 값 즉, 우리가 입력하는 값을 말한다.
다섯번째 줄 alert 내부에서 함수 get_argument를 호출한다.
get_argument(3)에서 3은 인자(argument)이다.
3은 매개변수(parameter) 즉, arg에게로 전달되어 arg는 3이라는 값을 가지게 된다.
이 변수 arg는 함수 get_argument 안에서만 유효하다.


  function get_arguments(arg1, arg2) {
      return arg1 * arg2;
  }

  alert(get_arguments(20, 40));
  alert(get_arguments(30, 50));


다섯번째 줄 alert 내부에서 함수 get_arguments를 호출한다.
get_arguments는 두 개의 인자를 가지고 있다.
각각 20과 40이다.
각각의 인자들은 매개변수 즉, arg1과 arg2에게로 전달되어
arg1은 20, arg2는 40이라는 값을 가지게 된다.
이어서 함수 내부에 있는 코드가 실행된다.
arg1 * arg2 연산이 먼저 실행되어 20 * 40 = 800이라는 값이 나온다.
800을 반환값(출력값)으로 내보내고 이 함수는 종료된다.

// 함수 5강 함수를 정의하는 다른 방법

  numbering = function ( ) {
      i = 0;
      while(i < 10) {
        document.write(i);
        i += 1;
      }
  };

함수에 대한 정의 부분이 좌항에 있는 numbering이라는 변수에 대입된다.
따라서 numbering이라는 변수가 함수를 갖게 된다.

함수를 호출할 때 numbering( );를 사용하면 된다.

위의 부분은 다음과 동일하다.

  function numbering( ) {
      i = 0;
      while(i < 10) {
        document.write(i);
        i += 1;
      }
  };




(function ( ) {
    i = 0;
    while(i < 10) {
      document.write(i);
      i += 1;
    }
}) ( );


함수의 이름이 없다.
함수를 정의하는 동시에 함수를 호출한다. => 익명 함수
일회성 호출 시에 사용된다.

'Today I learned' 카테고리의 다른 글

2020-11-11  (0) 2020.11.11
2020-02-06 모듈  (0) 2020.02.06
2020-02-05 JavaScript-객체  (0) 2020.02.05
2020-02-05 JavaScript-배열  (0) 2020.02.05
2020-02-05 JavaScript - 반복문  (0) 2020.02.05
'Today I learned' 카테고리의 다른 글
  • 2020-02-06 모듈
  • 2020-02-05 JavaScript-객체
  • 2020-02-05 JavaScript-배열
  • 2020-02-05 JavaScript - 반복문
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • k8s (1)
      • AWS (1)
      • 리눅스 (3)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    django
    쿠버네티스
    redis
    IP 주소
    FastAPI
    생활코딩
    모듈
    Kubectl
    typescript
    javascript
    iterable
    자바스크립트
    nestjs
    컨테이너
    typeorm
    리눅스
    Python
    스택
    프로그래머스
    도커
    기초
    mysql
    Kubernetes
    Til
    Docker
    코딩테스트
    배열
    네트워크
    조인
    레벨2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
2020-02-05 JavaScript - 함수
상단으로

티스토리툴바