함수(Function)

Steve·2021년 12월 4일
0

함수와 메소드의 차이?

객체의 프로퍼티가 함수일 경우 일반 함수와 구분하려고 메소드라고 부른다.

함수 선언식과 함수 표현식 차이

함수 선언식 - function 키워드만 사용한 방법
호이스팅 가능
함수 표현식 - 변수에 함수를 할당하는 방법
호이스팅 불가

이유는 선언식을 사용할 경우 런타임 이전 평가단계에서 함수객체가 생성되지만 표현식을 사용할 경우 함수로 런타임 이전까지는 초기화되지 않기 때문.

일반 함수와 화살표 함수 차이

  1. this 바인딩
    자바스크립트에서 모든 함수는 실행될 때마다 함수 내부에 this 라는 객체가 추가된다.
    일반 함수 : 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정됨.
  • 함수 실행시 전역객체
  • 메소드 실행시 메소드 소유 객체
  • 생성자 실행시에는 새롭게 만들어진 객체

화살표 함수의 this : 상위 스코프의 this 를 가리킴. 메소드(call, apply, bind)를 사용하여 this 변경불가.

  1. 생성자 함수 사용 가능 여부
    일반함수: 생성자 함수로 사용가능. prototype 프로퍼티를 가지며 프로토타입 객체의 constructor 를 사용.
    화살표 함수 : 생성자 함수로 사용못함. prototype 프로퍼티를 가지고 있지 않기 때문.

  2. arguments 사용 가능 여부
    일반함수: arguments 변수 사용가능
    화살표함수 : 사용불가

일급 객체(first-class citizen)란?

변수에 할당 가능
함수의 인자로 사용 가능
함수의 리턴값으로 사용 가능

고차함수(Higher-Order Function)란?

함수를 인자로 받거나 함수를 반환하는 함수

고차함수의 예시

Array.sort, Array.map 등

순수 함수란?

동일한 입력에는 항상 동일한 결과를 내는 함수
외부에 상태에 영향을 받지 않고 외부에 상태에 영향을 주지 않는 함수

함수형 프로그래밍이란?

순수 함수를 통해 side-effec를 최대한 피하여 오류를 방지하고 프로그램의 안전성을 높이려는 프로그래밍 패러다임

즉시 실행 함수(Immediately Invoked Function Expression, IIFE)란?

함수를 정의하고 즉시 호출되는 함수
단 한번만 호출되며 다시 호출할수 없음.
() 로 전체를 묶어야 함.

profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글