본문 바로가기

자바스크립트

[javascript] 함수의 매개변수 디폴트(기본) 값은 바꿀 수 있다.

반응형

함수는 일반적으로 다음과 같은 형태를 가진다.

function myFun(매개변수1, 매개변수2){
	//코드 
}

 

즉, 함수의 식별자인 myFun의 (        ) 내 인자로는 매개변수를 가질 수 있고, 할당된 매개변수는 함수 스코프 내부에서 선언 및 할당된 변수의 역할을 수행한다. 

 

또한 함수의 매개변수에 아무런 값을 전달하지 않으면, 기본적으로 undefined 가 할당되기 때문에 어찌 보면 undefined가 함수 매개변수의 기본값이라고 할 수 있다.

 

 

매개변수에 아무런 값을 전달하지 않은 경우

function myFun(a,b){
    console.log(a,b)
}

//함수 호출
myFun()

//출력결과) 이것을 통해서 a,b 에는 undefined가 할당된 것을 확인할 수 있다.
undefined undefined

 

허나, 우리는 이러한 기본값을 다른 값으로 대체할 수 있다. 즉 매개변수 = value 의 형태로 할당한다면, 우리가 함수를 호출 할 때 아무런 인자값을 전달하지 않아도 함수는 기본적으로 지정된 값을 스코프 내부에 전달하여 사용할 수 있게 된다.

 

말이 길어 졌는데, 예시로 들면 다음과 같다. 

 

 

매개변수에 아무런 값을 전달하지 않았으나, 기본값을 직접 설정하는 경우

function myFun(a=5,b=20){ //매개변수 기본값으로 5,20을 각각 할당했다.
    console.log(a,b)
}


// 보다 시피 아무런 인자값도 전달하지 않고 호출했다.
myFun()


//출력결과) 기본값으로 설정한 값이 그대로 출력되었다. 
5 20

 

이러한 방식은 함수를 그냥 호출해도 undefined 가 아닌 유의미한 값을 얻고자 할 때 사용할 수 있다.

 

그리고 이러한 지정 방식으로 값을 할당해도 결국은 기본값이기 때문에 매개변수에 직접 값을 전달하면, 전달된 값이 매개변수의 값이 된다.

 

매개변수에 기본값을 할당하고, 함수 호출 시 매개변수에 다른 값을 전달한 경우

//매개변수에 기본값으로 5와 20이 설정되어 있다. 
function myFun(a=5,b=20){
    console.log(a,b)
}

// 매개변수에 10과 20을 전달한다. 
myFun(10,30)

// 출력결과) 함수 호출 시 전달한 인자값이 매개변수에 할당되어 출력되었다.
10 30

 

예시에서 볼 수 있듯이, 기본값의 역할을 충실히 수행하고 있다.  고로 undefined가 싫으면 다른 값으로 지정하도록 하자.

반응형