1
2
3
4
5
6
7
8
<script>
    var f = function(d) {
        return d * d;
    }
    var val = f(); //호출하고자 하는 함수가 매개변수를 정의하고 안줘도 에러는 아님
    alert(val);
    
</script>
cs

1
2
3
4
5
6
7
8
<script>
    var f = function(d) {
        alert(arguments.length); //호출되고 있는 현재함수가 받은 매개변수들에 대한 정보를 담고 있는 객체
        return d * d;
    }
    var val = f(2,3,4); // 세 개의 데이터가 번부 함수로 전달은 됐음,
                        //첫번째 데이터만 d라는 이름을 부여받음
    alert(val);
cs

1
2
3
4
5
6
7
8
9
10
<script>
//    누적곱을 계산해주는 함수를 만들어보세요.
    var mult = function(){                                                   //함수안에 함수를 넣은 수 있다.
        var s = 1// 속한 함수 안에서만 접근 가능한 데이터, var응ㄴ 변수이고, 자바스크립트에 있는 6가지 자료형에 대한
                   // 데이터를 참조(저장)할 수 있음
         for(var i = 0; i < arguments.length; i++)
            s *= arguments[i] ;
        return s;
    }
    alert( mult(1,2,3,4));
cs

1
2
3
4
5
6
7
8
9
10
<script>
                            //전달되는 매개변수 받아내기(6가지 자료형 아무거나 매개변수에 들어올 수 있음)
    function callThreeTimes(callBack){
        for(var i = 0; i < 3; i++)
            callBack();//매개변수로 전달받은 함수로 호출
    }
    var callBack = function(){    //함수도 6가지 자료형 중 하나이고 변수에 담길 수 있음
        alert('함수호출');
    }
    callThreeTimes(callBack);    //매개변수에 함수를 전달
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
    //두수를 매개변수로 받아서 합을 리턴하는 함수
    var addFunc = function(a,b){
        return a+b;
    }
    //두수를 매개변수로 받아서 곱을 리턴하는 함수
    var multFunc = function(a,b){
        return a*b;
    }    
    //함수를 매개변수로 받아서 그 함수에 두개의 숫자를 넘겨주고
    //호출한 함수가 리턴하는 값을 출력하는 함수 작성
    var printFunc = function( func ){
        alert('결과를 출력합니다.');
        alert ( func(3,2) );
    }
    
    printFunc( addFunc );
    printFunc( multFunc);
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script>
    var punch = function(){
        alert('펀치공격!');
    }
    var missile = function(){
        alert('미사일 공격!');
    }
    var walk = function(){
        alert('걸어서 이동');
    }
    var fly = function(){
        alert('날아서 이동');
    }
    var robotFight = function(attack, move)
    {
        attack();
        move();
        attack();
    }
    robotFight(punch,walk);
cs

 

callback 함수 : 매개변수로 전달받은 함수를 호출하는 것


클로저(closure) :  함수내의 지역변수는 함수가 종료될 때 메모리가 해제되야 되는데, 

반환값으로 사용한 내부함수에서 지역번수를 사용하고 있어서 해제되지 못하고 메모리가 남아있는 현상

내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킨다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
    var myFunc = function(){
        var hello = "Hello world";
        var inner = function(){
            alert(hello);
        }
        inner();
    }
    var a = myFunc();
    var b = myFunc();
    
    a();
    b();
cs


내부함수 : 함수안에 함수를 정의할 수 있음

1. 원래 선언함수는 처음 실행시 모두 읽어서 메모리에 로드 하는데 내부함수는 선언함수여도 속한 함수가 호출될 때 로드됨.

2. 각자 이름공간을 갖음


자바스크립트에서는 함수도 하나의 자료형이므로 변수에 담길 수 있고, 당연히 매개변수로 전달도 가능


1
2
3
4
5
6
<script>
    setTimeout(function(){
//         alert('3초지남ㅋ');
        location.href = 'http://www.naver.com';
        //내장객체
    }, 1000);
cs


1
2
3
4
5
6
7
8
<script>
    var id = setInterval(function(){
        alert('인터벌을 주기마다 계속 실행');
    }, 1000)
    
    setTimeout(function(){
        clearInterval(id);
    },5000);
cs


' IOT 기반 응용 SW과정 > Web Programing' 카테고리의 다른 글

Day81  (0) 2016.07.13
Day80 jQuery  (0) 2016.07.12
Day78  (0) 2016.07.08
Day77  (0) 2016.07.07
Day73  (0) 2016.07.01

+ Recent posts