학원/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);