티스토리 뷰

자바스크립트 함수를 정의(생성)하는 방법은 3가지가 있다.

 

1 ) 함수 선언문(Function statement) / 선언적 함수 : function 키워드로 함수를 정의

 

2 ) 함수 표현식(Function expression) : function 키워드로 함수를 정의, 추가적으로 자바스크립트에서 함수는 일급 객체(함수를 하나의 값처럼 취급)이기 때문에 변수에 함수를 할당할 수 있음.

 

함수 표현식은 2가지로 나눌 수 있다.

 

2 - 1 ) 익명 함수 : 함수 이름이 없음, 변수명을 이용해서 함수 호출.

2 - 2 ) 기명 함수 : 함수 이름이 있음, 단, 함수 호출 시, 변수명을 이용해서 함수 호출.

함수 이름으로 함수 호출 시, ReferenceError가 발생.

 

아래의 코드를 살펴보자!

// 기명 함수(이름이 있는 함수)

var minus = function subtraction(x, y) {
    return x - y;
}
// 자바스크립트 엔진은 기명 함수를 아래와 같이 변경한다

var minus = function minus(x, y) {
    return x - y;
}

변수명, 함수 이름이 같아 보이기 때문에 함수 이름을 이용해서 함수를 호출하는 것처럼 보일 수 있지만, 변수명을 이용해서 함수를 호출을 하는 것임!

 

3 ) 함수 생성자 : 자바스크립트에 내장된 함수 생성자로 new 키워드와 함께 함수를 생성. 

 

 


익명 함수(Anonymous Function)?

: 이름이 없는 함수.

 

익명 함수는 어떻게 호출할 수 있을까?

: 일반적으로 함수 호출 시, 함수 이름(); 실행시킨다. 하지만 익명함수는 함수 선언문처럼 명시적으로(함수 이름 이용)호출을 할 수 없다.

 

방법 1 ) 함수 표현식을 사용한다

var anonymous = function(){
    console.log('Anonymous');
}
anonymous(); // 'Anonoymous'

 

방법 2 ) 즉시 실행 함수(immediately invoked function expression [IIFE]) 사용 한다.

 

(function() {
    console.log('Anonymous');
})(); // 'Anonymous'

 

익명 함수의 장점

 

음...익명 함수를 아무 생각없이 사용해서 잘 와닿지 않지만!

함수 이름 작성을 위해서 고민할 필요가 없다.

즉, 단순히 함수의 기능만 필요할 경우 익명 함수를 사용하면 좋다고 생각한다.

이름이 굳이 필요하지 않으니깐!

 

익명 함수의 단점 

 

1 ) 디버깅을 더 복잡하게 만들 수 있다

2 ) 필요 시, 재사용할 수 없다

3 ) 호이스팅에 영향을 받지 않기 때문에 에러 발생한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함