JavaScript

자바스크립트 (JavaScript) - 20 : 익명함수와 선언적 함수

n.han 2016. 7. 19. 11:07

- 익명 함수


함수는 코드의 집합을 나타내는 자료형이다. 함수는 다음 형태로 만든다.

 

<script>

        var func = function(){ };

</script>

 

위의 function() { }은 형태는 함수이지만 이름이 없으므로 익명 함수라고 부른다.

 

이름이 없으므로 변수에 넣어 사용해야 하기 때문에 스택 영역에 저장된다.

 

익명 함수를 사용할 때 주의해야할 점은 변수를 선언하기 전에 사용할 수 없다는 것이다.

 

예를 들어 다음과 같은 코드는 에러를 발생시킨다.

 

<script>

        func();

        var func = function() { alert('함수 A') };

        var func = function() { alert('함수 B') };

</script>

 

- 선언적 함수

 

선언적 함수는 다음과 같은 형태로 만든다.

 

<script>

        function() myFunc(){ };

</script>

위의 익명함수와의 차이점은 함수 선언부에 myFunc라는 함수 이름이 있다는 것이다.

 

따라서 함수 타입의 변수에 함수를 대입할 필요가 없게 된다.

 

선언적 함수 사용의 장점은 웹 브라우저가 스크립트 태그 내부의 내용을 한 줄씩 읽기 전에 선언적 함수부터 읽는다는 것이다.

 

이는 선언적 함수가 코드 영역에 저장되기 때문이다. 따라서 다음과 같은 코드가 가능하다.

 

<!DOCTYPE html>

<html>

        <head>

        <title></title>

        <meta charset="UTF-8">       

        <script>

               func();

               function func() { alert('함수 A') };

               function func() { alert('함수 B') };

        </script>

        </head>

<body>

</body>

</html>

alert 결과 :

함수 B