본문으로 바로가기

Function(함수)

category Javascript 2019. 11. 4. 16:56

함수 역할 3가지


  1. 특정시점에 사용할 javascript를 모아 놓기 위해 사용한다.
  2. 값으로서의 함수(함수 객체)

    (1) 변수의 값으로 함수를 입력하면 함수는 반드시 어떤 값으로 변경된다.(변수에 할당)
        
        ex) var a = alert();  //함수의 값을 지정해 주지 않았으므로 a=udefined가 된다

    (2) 어떤 정보를 갖고 오거나 보내기 위해 함수를 call 한다. 
        함수의 값을 갖고올때 사용할 수 없는 형태의 data를 갖고 오는 경우, 
        해당 값을 저장하기 위해 변수(variables)를 작성해 줄 수 있다.

        ex1) 변수를 설정하지 않고 함수를 call한 경우prompt("주문할 제품이름을 입력하세요.");  
              // 갖고오는 '제품의 이름'을 사용할 수 없음

        ex2) 변수를 설정하여 함수를 call한 경우
              var coffee=prompt("주문할 제품이름을 입력하세요."); 
              // '제품이름'을 coffee라는 변수에 key값으로 담아 두었기 때문에 사용할 수 있음.

 

 

함수가 있을때 HTML문서가 읽히는 순서


 

 

 

함수 정의 방법


1. 이름 있는 함수(선언적 정의 방법)

a();
var a=function(){}; //error!

함수를 만들기 전에 call하면 error가 남

 

 

 

2. 익명 함수(리터럴)

b();
function b(){}; //okay~

함수를 만들기 전에 call해도 괜찮음

 

 

 

 

함수가 종료되는 시점


  1. 실행하다가 더이상 실행할 line이 없을때
  2. 실행하다가 return 이라는 예약어를 만났을 때

 

예시
<body>
    <h1>function type 테스트 중</h1>
    <script>
        /*
            함수가 종료 되는 시점 
            1. 실행하다가 더이상 실행할 line이 없을때
            2. 실행하다가 return 이라는 예약어를 만났을 때
        */

        var a=function(){
            console.log("a함수 호출됨");
        };
        
        var b=function(){
            var isFinish=confirm("함수를 종료할까요?");
            if(isFinish){
                return;
            }
        };
    </script>

    <button type="button" onclick="a();">a 함수 테스트</button>
    <button type="button" onclick="b();">b 함수 테스트</button>
</body>

 

함수의 다향한 return type


1. return 예약어의 유무

<script>
	// return 예약어가 없는 경우
	var a=function(){
		console.log('a함수 호출');
	}; //undefined type의 data가 return됨.

	// return 예약어가 있는 경우
	var b=function(){
		console.log('b함수 호출');
		return; //undefined type의 data가 return됨.
	};
</script>

 

2. return 예약어가 있고 number type의 data가 있는 경우

<script>
	var c=function(){
		console.log('c함수 호출');
		return 999; // number
	};
</script>

 

3. return 예약어가 있고 string type의 data가 있는 경우

<script>
	var d=function(){
		console.log('d함수 호출');
		return "abcd"; // string
	};
</script>

 

4. return 예약어가 있고 Boolean, plain Object, array type의 data가 있는 경우

<script>
	var e=function(){
		console.log("e함수 호출됨");
		return true;   //Boolean
	};
     
	var f=function(){
		console.log("f함수 호출됨");
		return {num:1};  // plain Object
	};
   
	var g=function(){
		console.log("g함수 호출됨");
		return [10,20,30];  // array
	};
</script>

 

 

 

함수의 인자


//인자로 전달받은 두 수의 합을 출력하는 함수s
var showSum=function(num1, num2){
	//두 수의 합을 구해서
	var result=num1+num2;
	//콘솔창에 출력하기
	console.log(num1+"+"+num2+"="+result);  
	//return 해주는 값이 없음으로 undefined 출력됨.
}; 

 

 

 

함수를 1회성으로 call하는 경우


함수를 한번만 call함
var a=function(){
	console.log("무언가를 초기화 했습니다.");
};
a();

 

 

함수를 만들고 바로 1번 call 하고 종료하는 것
  • (function(){})();
//예시1)
(function(){
	console.log("초기화");
})();



//예시2)
(function(msg){
	console.log(msg);
})("hello"); //console에 "hello"가 출력됨.

 

 

 

 

 

 

 

연습문제


var f=function(){
	console.log("하나");
	console.log("두울");
	console.log("세엣");
};

 

문제1. 만들어진 함수를 page loading 시점에 호출하기 

 

<script>
f();
	console.log("페이지 로딩이 완료되었습니다.");
</script>

 

문제2. 만들어진 함수를 button 클릭하는 시점에 호출하기

<body>
<button type="button" onclick="f();">함수실행</button>
<script>
        var f=function(){
            console.log("하나");
            console.log("두울");
            console.log("세엣");
        };
</script>
</body>

 


문제1. return type을 맞춰보세요.

<script>
	// object type을 리턴해주는 함수
	var getMember=function(){
		var mem={num:1, name:"김구라", addr:"노량진"};
		return mem;
	};

	var f=getMember;
	var mem1=getMember();
	var a=mem1.num;
	var b=mem1.name;
	var c=mem1.addr;
</script>

<script>
	// object type을 리턴해주는 함수
	var getMember=function(){
		var mem={num:1, name:"김구라", addr:"노량진"};
		return mem;
	};

	var f=getMember; //function type
	var mem1=getMember(); //plain object type
	var a=mem1.num; //num type
	var b=mem1.name; //string type
	var c=mem1.addr; //string type
</script>

 


문제1. 특정 data type 으로 로그를 출력하는 함수 만들어보기

<body>
    <h1>function type 테스트 중</h1>
    <script>
        //특정 data type 으로 로그를 출력하는 함수 만들어보기
        var printLog=function(a){
            console.log("--log start---");
            console.log(a);
            console.log("--log end--");
        };

        //위에서 만든 함수 호출하면서 string type 전달하기
        printLog("hello");

        /*
            var printLog=function(함수의 변수 선언){
                console.log("--log start---");
                console.log(선언된 변수 넣기);
                console.log("--log end--");
            };
        */


    </script>
    <button onclick="printLog()">log출력</button>

</body>

 


문제1. 변수 obj1,2,3,4 중 같은 것 끼리 짝을 지어보세요.

<body>
    <h1>javascript 테스트 중</h1>
    <input type="text" id="one"/>
    <input type="text" id="two"/>

    <script>
        var getKey=function(sel){
            var obj=document.querySelector(sel);
            return obj;
        };

        var obj1=document.querySelector('#one');
        var obj2=getKey("#one");
        var obj3=document.querySelector('#two');
        var obj4=getKey("#two");
   </script>

</body>

 


문제1.    함수를 저장할 변수의 이름 : getSum

            인자를 전달받는 갯수 : 2개 

            인자로 숫자 2개를 전달 받으면 두 수의 합을 구해서 

            리턴해주는 함수를 만들고 테스트 해 보세요.

	var getSum=function(a, b){
		var result=a+b;
		return result;  // 결과 값을 return해줌 
	};

	var result1=getSum(10, 10); //20
	var result2=getSum(10, 20); //30
	var result3=getSum(10, 40); //50

 

 

'Javascript' 카테고리의 다른 글

카운트 올리기, 줄이기, 리셋  (0) 2019.11.05
javascript로 HTML 문서에 접근하고 contents변경해보기  (0) 2019.11.05
Array (배열)  (0) 2019.11.04
Plain object (객체)  (0) 2019.11.04
Number (수치형)  (0) 2019.11.04