본문 바로가기
Frontend/JavaScript

14. JavaScript 함수 (Function: 사용자 정의 함수, 변수의 유효범위)

by 개발개발빈이 2022. 5. 3.

코딩할 땐 팡션을 너무너무 잘 사용해야 한다..

○ 함수 (Function, Method) ★★★★★

    - 일정한 기능을 가지고 있다
    - 함수는 정의(작성)하고, 함수를 호출함으로써 실행된다
    - 함수 정의 : function 함수명( ){ 코드 }
    - 함수 호출 : 함수명( )

 

○ 함수작성 시 고려 사항

    - 매개변수(parameter)가 있는지?
    - 리턴값(return)이 있는지?

 

        ① 전달값(argument value)이 없는 경우

//함수정의
function test1() {
    document.write("KOREA");
} //test1() end

function test2() {
    document.write("SEOUL");
} //test2() end

//함수호출
test1();	//"KOREA" 본문에 출력
test2();	//"SEOUL" 본문에 출력

        ② 전달값(argument value)이 있는 경우

// 함수정의
function test3(a) {         //a는 parameter(매개변수)
    document.write(a+5);    //매개변수의 자료형은 없다
} //test3() end

function test4(a, b, c) {   
    document.write(a + ",");    
    document.write(b+c);
} //test4() end

//함수호출
test3(7);		//12
test4(50, 60, 70);	//50,130

        ③ 리턴값이 있는 경우

            - 리턴값: 값을 가지고 함수를 호출한 시점으로 되돌아 온다

            - 리턴값은 1개만 올 수 있다

            - 형식) return 값; 

//함수정의
function test5(a, b){
    var sum=a+b;
    return sum;
} //test5 end

function test6(){
    document.write("KOREA");                    
    return;	//맨 마지막 return명령어는 생략 가능
} //test6 end

//함수호출
var result=test5(3, 5);
document.write(result);	//8

test6(); //"KOREA"

        ④재귀적 함수 호출

            - 자신이 자신의 함수를 호출할 수 있다

//함수작성(팩토리얼 구하는 함수)
function test7(f){
    if(f==0){
        return 1;           	//f가 0이 되는 순간 자신의 함수를 부르는 것을 멈춤
    }else{
        return f*test(f-1);	//재귀적 함수 호출
    }//if end
} //test7() end

//함수호출
document.write(test(3));	//6=3*2*1

 

○ 변수의 유효 범위

    - 지역변수(local variable)  : function함수내에 선언된 변수는 함수 내에서만 사용가능하다
    - 전역변수(global variable) : function함수외부에서 선언된 변수로 모든 함수 내에서 그 값을 공유

var one="하나";  // 전역변수

function test1(){
    alert("one : " + one);
    alert("two : " + two);
    alert("three : " + three);
    var uid="SOLDESK";          // 지역변수
    alert(uid);
    alert(upw);                 // 에러: upw is not defined(undefined) 
} //test1 end

var two="둘";  // 전역변수

function test2(){
    var two="두번째";
    alert("one : " + one);
    alert("two : " + two);      // >>두번째: 지역변수의 우선순위가 더 높다
    alert("three : " + three);
    var upw="1234";             // 지역변수
    alert(upw);
} //test2 end

var three="셋";  // 전역변수

 

● PRACTICE 연습문제

    - 함수 관련 연습문제

        Q1) #기호 100번 출력하기
        Q2) 윤년, 평년을 구하시오

//Q1
function hundred(ch, num) {   
    for(a=1; a<=num; a++){
    	document.write(ch);
    }//for end
}//hundred() end

hundred("#", 100);	//함수호출

//Q2
function leap(year){
    if(year%4==0 && year%100!=0 || year%400==0){
        return true;
    }else{
        return false;
    }//if end
}//leap() end

if(leap(2022)){//함수 호출
    document.write("윤년");
}else{
    document.write("평년");
}//if end

 

댓글