[Javacript] 함수에서 주의할 부분

mnmm 😎·2020년 10월 4일
0
  • 함수 선언식
function funcName() {...}

✅ 함수 선언식은 호이스팅 가능 (로직을 어느 위치에서 짜든 상관없이 해당 함수를 불러올 수 있음)

  • 함수 표현식
const funcName = function() {...}

✅ 함수 표현식은 함수를 변수에 담은 것.
✅ 호이스팅이 불가능(로직을 상단에서부터 읽기 때문에 위치가 중요)

그리고 너무나도 헷갈렸던 부분은 함수 표현식에서 쓰이는 인자 또는 매개변수이다.

function funcName() {
  const args = arguments;

  return function(num) {
    for(let i = 0; i < args.length; i++) {
      ...
    }

    return ...;
  }
}

let output = funcName(func1, func2);
console.log(output(4)); // 여기서 4라는 인자는 funcName 안 내부 익명함수의 매개변수

output은 함수 표현식.
✅ output에 인자를 넘겨서 funcName의 리턴되는 익명함수에 매개변수로 받아왔다.
✅ 함수 인자의 개수를 알 수 없을 때 spread syntax 또는 arguments를 사용하게 되는데, arguments를 사용할 때는 리턴되는 함수를 선언하기 전에 꼭 변수에 담아주어야 리턴되는 익명함수에서 쓰일 수 있다.

profile
개발루:)

0개의 댓글