차차로그
일반함수와 익명함수 본문
자바스크립트의 함수 선언 방식은 기본적으로 일반 함수와 익명 함수로 나눌 수 있다.
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