Notice
Recent Posts
Recent Comments
«   2025/05   »
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 29 30 31
Tags
more
Today
Total
관리 메뉴

차차로그

일반함수와 익명함수 본문

JavaScript

일반함수와 익명함수

차차한 2024. 4. 9. 15:21

자바스크립트의 함수 선언 방식은 기본적으로 일반 함수와 익명 함수로 나눌 수 있다.

 

1. 일반 함수

일반 함수는 함수 선언식이라고 하며

일반적으로 다른 언어에서 사용하는 함수와 동일하다

function funcName(){
	alert("일반 함수 선언");
}

일반 함수는 호이스팅되어서 함수의 선언 위치에 제약이 없다.

funcName(); //alert작동

function funcName(){
	alert("일반 함수 선언");
}

funcName(); //alert작동

funcName 함수를 선언한 것보다 먼저 호출을 해도

호이스팅으로 인해 오류가 발행하지 않고 alert이벤트가 작동한다.

 

2. 익명 함수

익명 함수는 문자 그대로 함수의 이름이 존재하지 않는 함수다.

function(){
	alert("익명 함수 선언");
}

익명 함수는 한 번만 사용할 함수를 위한 개념이다.

일반적으로 변수에 담긴 형태로 사용을 한다.

let funcNm = function(){
	alert("익명 함수 선언");
}

funcNm();

이때 헷갈렸던 개념이, 왜 변수의 이름이 있는데 익명함수로 부를까? 라는 점이었다.

익명 함수는 변수가 있고 없고에 상관없이

함수자체 이름의 여부를 두고 판단한다!

function(){ 
	//익명함수
}

function funcNm(){
	//일반함수
}

이름의 유무와 같이 익명함수와 일반함수의 차이점은 호이스팅이 되는지 여부다.

일반함수는 호이스팅이 되지만, 익명함수는 호이스팅이 되지 않는다.

funcNm(); //에러 발생

let funcNm = function(){
	alert("익명 함수 선언");
}

funcNm();

익명함수를 선언하기 전에 해당 함수를 호출하면 에러가 발생하게 된다.

따라서 익명함수 사용 시 함수 선언 후에 해당 함수를 호출해야 한다.

 

3. 사용이유

익명함수를 쓰는 이유는 메모리 관리를 위해서다.

만약 모든 함수가 일반함수로 되어 있어서 모두 호이스팅이 된다고 하면

그 함수 중에는 한 번만 사용하는 함수도 다수 포함되어 있을 것이다

그렇게 되면 그 함수는 단 한 번의 사용을 위해 계속 메모리를 차지하고 있어야 한다.

 

때문에 재사용을 하지 않는 함수의 경우 

메모리를 효과적으로 관리하기 위해 

일반 함수가 아닌 익명함수로 구현하는 것이 좋다.

'JavaScript' 카테고리의 다른 글

물음표 사용법  (0) 2024.10.11
substring(), substr() 비교  (0) 2023.04.18
JS 이벤트, 버블링, 캡처링  (1) 2022.08.31
JS 반복 foreach, for in, for of  (0) 2022.08.12
JS 반복 map(), filter(), reduce()  (0) 2022.08.12
Comments