함수 종류

김승훈·2020년 10월 26일
0

JavaScript

목록 보기
4/16

함수 생성방법

  • 함수 리터럴
function add(x, y){
	return x + y;
};

함수 선언문 방식으로 함수 선언

  • 함수 리터럴방식과 형태는 같음.

  • 반드시 함수명이 정의되 있어야 함.

  • 함수 표현식(함수 호이스팅이 되지 않음)

    변수를 할당하는 것과 마찬가지로 함수를 생성하는 방법

    var add = function(x, y){
    	return x + y
    }
  • 익명함수와 기명함수

    이름이 없는 함수는 익명함수, 이름이 있는 함수를 기명함수 표현식이라고 함.

    var add = function sum() {
    	return x + y;
    };
    
    //함수 호출
    add(3,4); // 7
    sum(3,4) // Uncaught ReferenceError : sum is not defined()

    함수표현식의 경우, 자바스크립트 엔진에 의해, 함수의 이름이 변수명에 적용되게 됨.

    코드의 변경흐름은 다음과 같다.

    var add = function add(x, y)
    	return x + y);
    }

    함수표현식에서의 함수이름은 선택사항이지만, 함수이름을 이용하여 함수 코드 내부에서 재귀 호출이 가능함.

    var factorialVar = function factorial(n) {
    	if(n <= 1) {
    		return 1;
    	}
    	return n * factorial(n-1);
    }
    
    console.log(factorialVar(3));
    // 코드 실행순서
    
    // 1. 함수에 함수변수명이 적용됨.
    factorialVar = function factorialVar(3){
    // 2. if문을 체크하지만 해당사항이 없음.
    if(n < = 1) {
    	return 1;
    }
    
    // 3. 함수 내부에서 자기자신(원래의 자기 함수명)을 호출시킴에 따라, return문이 실행됨.
    return n * factorial(n-1);
    // 3 * (3-1) == 6
    // return 값은 6이 출력됨.
    }
  • 함수 선언문(function statement)과 함수 표현식(function expression)에서의 세미콜론

    • 함수 선언문 방식 : 함수 끝에 세미콜론(;)을 붙이지 않음

    • 함수 표현식 방식 : 함수 끝에 세미콜론(;)을 붙이는 것을 권장.

      var func = function() {
      	return 42;
      }
      (function () {
      	console.log("function called");
      })();
      
      // number is not a function 에러 발생

      에러 발생 이유는, 자바스크립트 파서가 중괄호 이후에 세미콜론(;)이 없음에 따라, 함수가 끝났다고 판단하지 않아 func()함수를 호출하게 된다.

      이러한 문제로 함수표현식 방식에서는 끝에 세미콜론(;)을 강력하게 권고한다.

  • Function()생성자 함수를 통해 함수 생성

new Fuction(arg1, arg2, ... argN, functionBody)

Function안에 매개변수와 함수가 호출될 때 실행될 코드를 포함한 문자열을 집어넣는다.

var add = new Function('x', 'y', 'return x + y');
console.log(add(3, 4)); // 7

자주 사용되지는 않음.

0개의 댓글