Ch 4. 함수- 화살표 함수, 즉시 실행 함수(IIFE)

화살표 함수

1
2
3
4
function sum() {}
const sum = function () {};
const sum = () => {}; //화살표 함수
;(() => {...})() //즉시 실행 함수

함수를 나타내는 방법은 위 네가지가 존재한다. 이 중 화살표 함수와 즉시 실행 함수에 대해 알아보자.

1
2
3
4
5
6
7
8
9
const sum = (a, b) => {
  return a + b;
};
const sum = (a, b) => a + b; //동일하게 작동한다.

const g = () => {
  return { a: 1 };
};
const g = () => ({ a: 1 }); //객체 데이터를 바로 return할때는 소괄호로 묶어주자

화살표 함수내 return 외 코드가 존재하지 않는다면 return과 중괄호를 생략하고 한줄로 표현 가능하다. 만일 return 되는 값이 객체 데이터라면, return과 중괄호를 생략하는 대신 객체 데이터를 소괄호로 묶어주어야 한다.

1
2
3
const a = () => {};
const b = (x) => {};
const c = (x, y) => {};

화살표 함수에서 매개변수가 하나 뿐이라면 소괄호를 생략 가능하다.


즉시실행함수(IIFE)

1
2
3
4
5
6
7
const a = 7;

const double = () => {
  console.log(a * 2);
};

double();

일반적인 함수는 위와 같이 실행코드가 존재해야 실행된다.

1
2
3
(() => {
  console.log(a * 2);
})();

즉시 실행 함수는 실행코드 없이 함수 그 자체만으로 실행이 가능하다.

활용 패턴

1
2
3
4
5
;(() => {...})()       // (F)()
;(function () {...})() // (F)()
;(function () {...}()) // (F())
;!function () {...}()  // !F()
;+function () {...}()  // +F()

즉시실행함수의 매개변수

1
2
3
4
5
6
7
((a, b) => {
  console.log(a);
  console.log(b);
})(1, 2);

//1
//2

즉시 실행 함수는 두번째 소괄호에 들어가는 데이터들을 즉시실행함수의 매개변수로 전달 가능하다.