즉시 실행 함수

2023. 2. 23. 15:38JAVASCRIPT

<script>
    // 즉시실행함수(IIFE : Immediately Invoked Function Expression)
    // 함수 정의와 동시에 즉시 호출되는 함수를 즉시실행함수
    // 즉시실행함수는 단 한번만 호출된다, 다시호출할 수 없다.

    // 패턴
    (function(){
        //코드...
    })();

    (function(){
        //코드...
    }());

    (function(){
        console.log("즉시 실행함수....");
    })();

    (function(){
        console.log("익명 즉시 실행함수....");
    }());

    (function aaa(){
        console.log("기명 즉시 실행함수....");
    }());

    // 즉시 실행함수는 한번 실행 후에 메모리에서 사라짐
    // 따라서, 재호출하면 참조오류 발생
    //aaa(); // 참조오류 발생

    (my = function(x){
        console.log("예> : "+(x*x));
    })(2);

    my(3);

    // 변수에 즉시 실행함수를 저장
    var my2 = (function(x){
        return x*x;
    })(4);

    console.log("my2 : " + my2);

    var app = (function(){
        // private
        var str = "하이";
        var intVal = 1000;

        // public
        return {
            propStr : str,
            propInt : intVal
        };
    }());

    //console.log(app.str); // 외부에서 접근안됨.
    console.log(app.propStr); // 외부에서 접근안됨.
    //console.log(app.intVal);
    console.log(app.propInt);

    ////////////// 모듈화 패턴 /////////////
    var member = (function(){
        var name = '홍';
        var age = '22';
        var addr ='강남';

        var salary = 2000;
        var tax = 100;
        var email = 'test@gmail.com';
        var tel = 010-1212-1212;

        // public 함수
        var method = function(){
            paySalary = salary - tax;
            return paySalary;
        };

        // private 함수
        var memInfo = function(){
            return name + ", " + addr;
        };

        return{
            name:name,
            tax:tax,
            email:email,
            method: method
        };
    }());

    console.log(member.name);
    console.log(member.email);
    console.log(member.salary);

    console.log(member.method());
    console.log(member.memInfo()); // 에러
    






</script>

'JAVASCRIPT' 카테고리의 다른 글

업로드 input 추가 , 파일 선택시 이미지 추출  (0) 2023.02.17
AJAX  (0) 2023.02.16