[JS] 함수

뭉크의 개발·2021년 9월 8일
0

함수

함수란?

  • 코드의 집합
  • 함수의 예 : alert(), prompt()

익명함수

  • 함수의 형태
  • 중괄호 내부에 코드를 넣음

함수의 생성과 출력

  • 문자열처럼 보일 수 있지만 typeof 연산자를 사용하면 함수 자료형
<script>
   // 변수를 생성합니다.
   var 함수 = function() {
       var output = prompt('숫자를 입력해주세요.', '숫자');
       alert(output);
   };
       
   // 출력합니다.
   alert(함수);
</script>

함수의 생성과 출력

  • 익명함수 : function() {} 형태는 함수이지만 이름이 없음
  • 선언적 함수 : 이름이 있는 함수
// 함수를 만듭니다.
var 함수 = function() {
   var output = prompt('숫자를 입력해주세요.', '숫자');
   alert(output);
};
// 함수를 호출합니다.
함수 ()
  • 함수 호출 : 뒤에 괄호를 열고 닫음으로 코드를 실행
  • 내장 함수 출력
    alert(alert);
    alert(prompt);

선언적 함수

선언적 함수

  • 선언적 함수 생성
function 함수() {
}
  • 다음과 차이는? 아래는 익명함수
var 함수 = function() {};

  • 선언적 함수의 재정의(1)
<script>
   function 함수() { alert('함수 A'); }
   finction 함수() { alert('함수 B'); }
   함수();
</script>
  • 익명함수의 재정의(1)
<script>
   var 함수 = function() { alert('함수 A'); }
   var 함수 = function() { alert('함수 B'); }
   함수();
</script>
  • 익명 함수 재정의(2) 오류 발생
<script>
   함수(); // 정의한 함수가 없음.
   var 함수 = function() { alert('함수 A'); }
   var 함수 = function() { alert('함수 B'); }
</script>
  • 선언적 함수의 재정의(2) 정상실행
<script>
   함수();
   function 함수() { alert('함수 A'); } // 이름이 있는 함수
   function 함수() { alert('함수 B'); }
</script>

<script>
   var 함수 = function() { alert('함수 A'); }
   function 함수() {alert('함수 B'); }
   함수();
</script>

=> 선언적 함수 B부터 실행, 결과 함수 A

매개변수와 리턴값

매개변수와 리턴값

  • 매개변수 : 함수를 호출 할 때 괄호 안에 적는 것
  • 리턴값 : prompt() 함수를 사용하면 사용자가 입력한 문자열로 변환

매개변수와 리턴값으로 함수 만들기

  • 모든 함수에 매개변수와 리턴값을 사용하지 않음
  • 선택적 매개변수와 리턴값 사용
function 함수이름(매개변수, 매개변수, 매개변수) {
   // 함수 코드
   return 리턴값;
}
  • input : 매개변수
  • output: 리턴값

매개변수

매개변수

  • 함수 호출과 함수 연결의 매개가 되는 변수
  • 함수 생성 시 지정한 매개 변수의 수가 많거나 적은 사용도 허용
  • 지정하지 않은 매개변수는 undefined로 입력
<script>
   // 함수를 호출합니다.
   alert('원래 매개변수입니다.', '추가된 매개변수입니다.');
   prompt('원래 매개변수입니다.');
</script>

Array() 함수

  • 형태
<script>
   var array1 = Array();
   var array2 = Array(10);
   var array3 = Array(273, 103, 57, 32);
   
   alert(array1 + '\n' + array2 + '\n' + array3);
</script>

  • Array() 함수의 매개변수에 따른 차이

가변인자 함수

가변인자함수

  • 매개변수의 개수가 변할 수 있는 함수
  • 매개변수가 선언된 형태와 다르게 사용했을 때 매개변수를 모두 활용하는 함수를 의미
  • 가변인자 함수의 예 : Array() 함수

sumAll() 함수

  • arguments
  • 자바스크립트 내부 변수의 기본으로 제공
  • 매개변수의 배열
<script>
   function sumAll() {
 }
</script>

  • arguments 객체를 사용한 가변 인자 함수
<script>
   // 함수를 생성합니다.
   function sumAll() {
      var output = 0;
      for (var i = 0; i<arguments.length; i++) {
          output += arguments[i];
      }
      return output;
   }
   
   // 함수를 호출 및 출력합니다.
   alert(sumAll(1, 2, 3, 4, 5, 6, 7, 8, 9));
</script>
  • 매개변수의 개수가 다른 경우
<script>
        function 이렇게함수() {
            var length = arguments.length;
            if (length == 0) {
                // 매개변수가 없을 때
            } else if (length == 1) {
                // 매개변수가 하나일 때
            } else {
                // 매개변수가 2개 이상일 때
            }
        }
</script>

리턴값

리턴 키워드

  • 함수 실행 중 함수를 호출한 곳으로 돌아가라는 의미
<script>
    // 함수를 생성합니다.
    function returnFuntion() {
        alert('문장 A');
        return;
        alert('문장 B');
    }
    
    // 함수를 호출합니다.
    returnFunction();
</script>

  • 리턴 키워드 뒤에 값을 입력하지 않을 경우 : 리턴하지 않으면 아무것도 들어가지 않음
<script>
    // 함수를 생성합니다.
    function returnFuntion() {
        alert('문장 A');
        return;
        alert('문장 B');
    }
    
    // 함수를 호출합니다.
    var output = returnFunction();
    alert(typeof (output) + ' : ' + output);
</script>

내부함수

내부함수

  • 프로그램 개발 시 일어나는 충돌을 막는 방법
  • 내부 함수는 함수 내부에 선언
function 외부 함수 () {
    function 내부 함수1() {
       //함수 코드
    }
    
    function 내부 함수2() {
       //함수 코드
    }
    
    // 함수 코드
}

pythagoras() 내부 함수

  • 밑변과 높이를 매개변수로 받아 빗변의 길이를 리턴
  • 내부 함수는 함수 내부에 선언
<script>
   function pythagoras(width, height) {
      return Math.sqrt(width * width + height * height);
      }
</script>
  • square()함수
<script>
   // 제곱을 구하는 함수
   function square(x) {
       return x * x;
   }
   
   // 피타고라스 함수
   function pythagoras(width, height) {
      return Math.sqrt(square(width) + square(height));
      }
</script>
  • 함수 이름의 충돌

내부 함수 이용으로 함수 충돌을 막는 법

  • 내부 함수 사용 시 내부 함수 우선
<script>
   function pythagoras(width, height) {
      function square(x) {
         return x * x;
         }
         
         return Math.sqrt(square(width) + square(height));
       }
</script>

주의할 점

  • phytagoras() 함수 외부에서는 square() 함수를 사용할 수 없음.

자기 호출 함수

  • 다른 개발자에게 영향을 주지 않음
  • 함수를 생성하자마자 호출
<script>
        (function () {
	// 코드
        })();
</script>

0개의 댓글