반영훈/웹 개발
[JS] 익명함수(무명함수)와 즉시실행함수
Banda
2020. 8. 13. 11:02
<script>
func();
function func() {alert('function A')};
function func() {alert('function B')};
</script>
일반적인 함수의 형태(선언적 함수)는 아래와 같이 함수에 sum이라는 이름을 붙여 재사용 할 수 있게 만듦.
function sum(a,b){
var m = a + b;
return m;
}
var sumanswer = sum(1,2);
console.log(sumanswer);
이에 반해 익명함수의 경우는 아래와 같이 함수(function)에는 이름이 없고 함수에 바로 (a,b)라는 인수만 지정됨.
var sum = function(a,b){
var m = a + b;
return m;
}
var sumanswer = sum(1,2);
console.log(sumanswer);
위의 익명개념 함수에서 확장 된 것이 즉시실행함수
이 즉시실행함수는 변수 안에 함수와 인수값까지 몽땅 다 집어넣어서 사용하는 것
var sum=(function(a,b){
var m = a + b;
return m;
})(1,2);
console.log(sum);
출처 - https://osxtip.tistory.com/635
선언적 함수와 익명함수의 차이는 웹 브라우저가 script 태그 내부의 내용을 위에서 부터 한줄 씩 읽기 전에 선언적 함수부터 먼저 읽는다.
따라서 아래의 코드를 실행하면 오류가 발생한다.
<script>
func();
var func = function () {alert('function A')};
var func = function () {alert('function B')};
</script>
익명함수를 저장한 변수를 선언하기 이전에 그 변수를 사용했기 때문이다.
따라서 오류가 나지 않게 하려면 아래와 같이 작성해주면 된다.