개발/JavaScript

JavaScript] 자바스크립트 뿌시기 (함수의 다양한 형태)

펭귀니 :) 2021. 2. 2. 20:18

🎉 함수의 다양한 형태


콜백 함수

  • 코드를 통해 명시적으로 호출하는 함수가 아니라, 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 호출되는 함수이다.

즉시 실행 함수 (immediate functions)

(function (location){

    console.log('지금 위치는? => ' + location);

})('경기도');
  • 함수 정의와 동시에 실행하는 함수이다.

  • 위의 코드처럼 즉시 실행 함수를 작성할 수 있으며, 특징은 최초 한 번의 실행만을 필요로하는 초기화 코드 부분에 적당하다는 점이다.

  • 즉시 실행 함수 내부에 변수들은 함수 외부에서 접근할 수 없다.

내부 함수 (inner function)

function parent(){
      var a = 100;
      var b = 200;

      // 내부 함수 정의
      function child() {
        var b = 300;

        console.log(a); // print >> 100
        console.log(b); // print >> 300

      }
      child(); 
}
parent();  
child(); // print >> Uncaught ReferenceError: child is not defined
  • 자바스크립트에서는 함수 코드 내부에서 다시 함수 정의가 가능한데, 이것을 내부 함수라고 부른다.

  • 내부 함수는 일반적으로 자신이 정의된 부모 함수 내부에서만 호출이 가능하다.

  • 내부 함수는 자신을 둘러싼 부모 함수의 변수에 접근이 가능하다.

  • ❗ 부모 함수가 내부 함수를 외부로 return하면, 부모 함수 밖에서도 내부 함수를 호출할 수 있다. (아래 예제)

function parent() {
      var a = 100;

      var child = function () {
          console.log(a);
      }

      return child;
}
var inner = parent();
inner(); // print >> 100

함수를 리턴하는 함수

var self = function () {
      console.log('a');

      return function () {
          console.log('b');
      }
}

me = self(); // print >> a  
me(); // print >> b
  • 자바스크립트에서 함수는 일급 객체이므로 함수 자체를 리턴할 수 있다.

  • 자바스크립트의 언어적 유연성을 보여주는 예이다.

📖 출처


송형주, 고현준 지음, 『인사이드 자바스크립트』, 한빛미디어(2014)