객체의 프로퍼티가 함수일 경우 일반 함수와 구분하려고 메소드라고 부른다.
함수 선언식 - function 키워드만 사용한 방법
호이스팅 가능
함수 표현식 - 변수에 함수를 할당하는 방법
호이스팅 불가
이유는 선언식을 사용할 경우 런타임 이전 평가단계에서 함수객체가 생성되지만 표현식을 사용할 경우 함수로 런타임 이전까지는 초기화되지 않기 때문.
화살표 함수의 this : 상위 스코프의 this 를 가리킴. 메소드(call, apply, bind)를 사용하여 this 변경불가.
생성자 함수 사용 가능 여부
일반함수: 생성자 함수로 사용가능. prototype 프로퍼티를 가지며 프로토타입 객체의 constructor 를 사용.
화살표 함수 : 생성자 함수로 사용못함. prototype 프로퍼티를 가지고 있지 않기 때문.
arguments 사용 가능 여부
일반함수: arguments 변수 사용가능
화살표함수 : 사용불가
변수에 할당 가능
함수의 인자로 사용 가능
함수의 리턴값으로 사용 가능
함수를 인자로 받거나 함수를 반환하는 함수
Array.sort, Array.map 등
동일한 입력에는 항상 동일한 결과를 내는 함수
외부에 상태에 영향을 받지 않고 외부에 상태에 영향을 주지 않는 함수
순수 함수를 통해 side-effec를 최대한 피하여 오류를 방지하고 프로그램의 안전성을 높이려는 프로그래밍 패러다임
함수를 정의하고 즉시 호출되는 함수
단 한번만 호출되며 다시 호출할수 없음.
() 로 전체를 묶어야 함.