March 06, 2023
함수는 일정한 동작을 수행하는 코드들의 집합이다.
자바스크립트에서의 함수는 Function
객체이다.
자바스크립트에서의 함수는 일급객체이기 때문에 다음과 같은 특징을 가지고 있다.
// 함수는 변수에 담을 수 있다.
const func1 = function () {
console.log("함수를 변수에 담을 수 있어요");
}
// 함수를 인자로 전달할 수 있다.
function func2(param) {
param();
}
// 반환값으로 함수를 전달할 수 있다.
function func3() {
return function () {
console.log("반환값으로 함수를 전달할 수 있어요");
}
}
func1();
func2(function() {
console.log("함수를 인자로 전달할 수 있어요");
});
func3()();
함수를 변수에 담을 수 있어요
함수를 인자로 전달할 수 있어요
반환값으로 함수를 전달할 수 있어요
자바스크립트에서 함수를 정의하는 방법으로는 크게 함수 선언과 함수 표현식의 방법이 있다.
함수를 정의하는 기본적인 방식이다.
func(); // 함수 선언
function func() {
console.log("함수 선언");
}
함수를 정의해서 변수에 대입하는 방법이다.
undefined
로 초기화 되어 있기 때문에func(); // ReferenceError: Cannot access 'func2' before initialization
const func = function () {
console.log("함수 표현식");
}
function
키워드를 사용하거나 화살표 함수를 사용하는 방법이 있다.const func1 = function () {
console.log("function 키워드");
}
const func2 = () => {
console.log("화살표 함수");
}
func1(); // function 키워드
func2(); // 화살표 함수
자바스크립트에서는 함수도 객체이기 때문에 new
연산자로 Function
객체를 생성하는 방법이다.
다만 일부 자바스크립트 최적화를 적용할 수 없으며 권장하지 않는 방법이라고 한다.
const func = new Function("console.log('안녕하세요')");
func(); // 안녕하세요
함수 선언 방식으로는 정의할 때에는 반드시 즉시 실행 함수(IIFE, Immediately-Invoked Function Expression) 여야 한다.
함수 표현식 방식으로 정의할 때에는 변수의 이름을 지정해주므로 함수의 이름은 지정하지 않아도 상관없다.
(function() {
console.log("함수 선언");
})();
const func = function() {
console.log("함수 표현식");
}
func();
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions