티스토리 뷰

반응형

5.1 함수 개요

▲ 함수 : 코드의 집합, 모든 프로그래밍 언어에서 중요한 부분

var 함수 = function () { }; //익명 함수
function () { };           //선언적 함수

▲ 익명 함수 : 함수가 이름을 가지고 있지 않음

▲ 선언적 함수 : 함수가 이름을 가지고 있음

▲ 익명 함수와 선언적 함수의 차이점 : 두 가지 방법 모두 함수를 생성하는 방법이나, 약간의 차이가 있다.
익명 함수는 변수로 함수를 선언하기 때문에, 함수 출력의 순서가 중요함.
그러나 선언적 함수는 웹 브라우저가 먼저 읽기 때문에, 함수 출력의 순서가 중요하지 않음.

 

코드 5-1.  함수의 생성과 출력

<script>
    var 함수 = function () {
        var output = prompt('숫자를 입력해주세요', '숫자');
        alert(output);
    };
    alert(함수);
</script>

<코드설명> function(){ } 형태는 함수지만, 이름을 가지고 있지 않으므로 익명 함수 라고 부름. 이름이 없기 때문에 변수에 넣어서 사용해야함. 반대로 이름을 가지고 있는 함수를 선언적 함수 라고 부름.

 

코드 5-3.  함수의 호출

<script>
    // 함수 만들기
    var 함수 = function () {
        var output = prompt('숫자를 입력해주세요.', '숫자');
        alert(output);
    };
    
    //함수 호출
    함수();
</script>

<코드설명> function(){ } 형태는 함수지만, 이름을 가지고 있지 않으므로 익명 함수 라고 부름. 이름이 없기 때문에 변수에 넣어서 사용해야함


5.2 선언적 함수

▲ 선언적 함수

function 함수() {
}

 

코드 5-4.  선언적 함수의 재정의 (1)

<script>
    function 함수() {alert('함수 A'); }
    function 함수() {alert('함수 B'); }
    함수();
</script>

<코드설명> 이름이 같은 함수를 두개 만들고, 함수를 호출했을 때 둘 중 어떤 함수가 실행되는가? => 뒤에 위치하는 함수가 실행됨

코드 5-5.  익명 함수의 재정의 (1)

<script>
    var 함수 = function() {alert('함수 A'); }
    var 함수 = function() {alert('함수 B'); }
    함수();
</script>

<코드설명> 5-5는 5-4와 유사한 코드. 변수는 같은 이름으로 다시 선언하면 기존의 변수를 덮어 씌우므로 뒤쪽에 있는 변수를 사용하게 됨. 따라서 5-4, 5-5 모두 뒤에 위치한 함수가 이전에 선언한 함수를 덮어씌운 것.

코드 5-6.  익명 함수의 재정의 (2)

<script>
    함수();
    var 함수 = function() {alert('함수 A'); }
    var 함수 = function() {alert('함수 B'); }
</script>

<코드설명> 위의 코드는 오류가 발생해 실행되지 않음. 변수를 선언하기 이전에 변수를 사용했기 때문.

코드 5-7.  선언적 함수의 재정의 (2)

<script>
    함수();
    function함수() {alert('함수 A'); }
    function함수() {alert('함수 B'); }
</script>

<코드설명> 익명 함수와 달리, 선언적 함수를 사용하면 정상적으로 코드가 실행됨. 웹 브라우저는 script 태그 내부의 내용을 한 줄 한 줄 읽기 전에 선언적 함수를 읽음. 따라서 5-7은 첫째 줄부터 실행하는 것이 아니라 둘째 줄 → 셋째줄 → 첫째줄의 순서로 실행됨. 따라서 함수();는 문자열 '함수 B'를 출력함

반응형
댓글