본문 바로가기
프로그래밍/JavaScript

자바스크립트 함수 선언 6가지 방법

by so5663 2022. 11. 2.

 

1. named function declaration (명명 함수 선언)

function hello() {
  // ...
}

현재 내가 재직하는 회사에서 제일 많이 사용하는 방법이자 가장 대중적임

호이스팅이 되기 때문에 이 함수는 어느 스코프에서든 호출 할수 있음

 

2. anonymous function expression (익명 함수 표현)

var hello = function () {
  //...
}

hello.name

//  > "hello"
hello

// > ƒ () {
//   //...
// }

이름이 없는 함수를 변수에 담은 방식이다.

이름이 없는 함수긴 한데, 자바스크립트 엔진이 자동으로 이름을 변수명으로 추정하여 넣는다.

변수 할당은 호이스팅 되지 않으므로, 할당 된 이후에만 실행 가능하다.

 

3. named function expression (명명 함수 표현)

var hello = function originalName() {
  // ...
}

2번과 동일한데 다른 점은 함수 이름이 명확하게 선언되어 있다.

 

4. Immediately-invoked expression (즉시 실행 표현)

var myCounter = (function (initialValue = 0) {
  let count = initialValue
  return function () {
    count++
    return count
  }
})(1)

myCounter() // 2
myCounter() // 3
myCounter() // 4

외부 함수에서 넘겨준 1을 가지고, 내부에서 처리를 하여 리턴하고 있다.

 

5. function constructor

const adder = new Function('a', 'b', 'return a + b')
adder(2, 6)
// 8

이런식으로는 거의 사용하지 않는다.

 

6. arrow function (화살표 함수)

const f1 = (x, y, z) => x + y + z

const f2 = (x, y, z) => {
  return x + y + z
}

요즘들어 많이 사용하는 함수다.