학원/JS

11/1 33-5 [JS] Function_2

도원결의 2022. 11. 1. 20:24

함수 형식 4가지를 예를들어 정리 해 볼거예요 

이거 쓰다보니까 마치 함수가

자바의 메소드와클래스를 섞어놓은 듯한 그런 비슷한 느낌이 드네요...?

 

[함수형식 1] : 함수정의 -함수 선언문

function noParamNoReturn(){
      console.log('================ Menu ===========');
      var Menu='';
      if(arguments.length !=0){
           Menu = arguments[0];
       }
       console.log('1.계속 2.나가기'+Menu);
       console.log('==================================')
}
//호출//    
console.log(noParamNoReturn);    // 함수호출 이렇게 하는거 아님요!
console.log('타입:%s',typeof noParamNoReturn);  
window.noParamNoReturn();     //호출 이렇게 함! 앞에 window.은 생략 가능하죠
window.noParamNoReturn('3.함수 선언문'); //오와!!! 밖에서도 매개변수 추가가 가능해 완전신기!!!

 

[함수형식 2] : 함수정의 -함수 표현식

함수 호출 할 때 걍 함수명만 쓰면.. 함수에 관한 내용만 출력 됨! 꼭 ()써야해용!

var yesParamNoReturn = function(start,end){
    var total =0;
    for(var i=start ; i<= end ; i++) total += i;
    console.log('%d 부터 %d 까지 누적합: %d',start,end,total);
};
//호출
console.log(yesParamNoReturn);
console.log('타입:%s',typeof yesParamNoReturn);
window.yesParamNoReturn(1,10);
yesParamNoReturn(); // 궁금해서 인자 없이도 호출 해 봄

 

[함수형식 3]  - 응? 이거도 함수 표현식인데 사용자로부터 입력받고 리턴값이 이 있다 !

var noParamYesReturn = function(){
    var name = prompt('이름입력?','');
    var age = prompt('나이입력?',1);   // 디포트값 1로 셋팅
    return '이름:'+name+', 나이:'+age;
    //console.log('return문 이후'); // unreachable  에러!
};
//호출
console.log(noParamYesReturn());

 

[함수형식 4] : 함수정의 -함수 선언문 인데 파라미터값도 있고 리턴값도 있음

function yesParamYesReturn (num1, num2){
    if(arguments.length == 2 ){ // 인자 개수 제대로 받았을 때
        return num1> num2 ? num1 : num2 ;  //큰 값 반환
    }
    var max = arguments[0];   //인자 개수 넘쳐날 때 
    for(var i =1; i<arguments.length ; i++)
        if(max < arguments[i]) max = arguments[i];
        return max;
}
//호출//
console.log('최대값:',yesParamYesReturn (10, 9));
console.log('최대값:',yesParamYesReturn (10, 9,2,4,6,7,1,45,768));

 

 

+++ 즉시 실행 함수 : 즉시 실행함수에서 반환값을 realtime 에 저장 한다

    원래는

var = realtime = function(num1,num2){

    할일 정의        }

그러고 나서 호출

realtime(인자1,인자2); 

이렇게 해야 하는데 이 둘을 합쳐 버린 것 !

// 이거는... 직접 쓰면서 이해하는게 더 빠름 !
var realTime =(  function(num1,num2){
console.log('즉시 실행함수:',arguments);
return num1+num2 ;
} )(10,20);

//저기서 그냥 바로 호출이 되버리네... 어휴 빨라라
console.log(realTime); // 위에 리턴값 설정 안해놓으면  undefined ! 리턴을 붙이면 결과값 30이 나옴!
console.log(typeof realTime);