본문 바로가기

개발/javascript

함수11 - 인수 확인

"함수"

 

5.2. 인수 확인

아래 예제를 살펴보자.

function add(x, y) {
	return x + y;
}

위 함수를 정의한 개발자의 의도는 아마도 2개의 숫자 타입 인수를 전달받아 그 합계를 반환하려는 것으로 추측된다. 하지만 코드상으로는 어떤 타입의 인수를 전달하여야 하는지, 어떤 타입의 값을 반환해야 하는지 명확하지 않다. 따라서 위 함수는 아래와 같이 호출될 수 있다.

 

function add(x, y) {
	return x + y;
}

console.log(add(2));		// NaN
console.log(add('a', 'b'));	// 'ab'

위 코드는 자바스크립트 문법상 어떠한 문제도 없으므로 자바스크립트 엔진은 아무런 이의 제기 없이 위 코드를 실행할 것이다. 이러한 상황이 발생한 이유는 아래와 같다.

  1. 자바스크립트 함수는 매개변수와 인수의 개수가 일치하는지 확인하지 않는다.
  2. 자바스크립트는 동적 타입 언어이다. 따라서 자바스크립트 함수는 매개변수의 타입을 사전에 지정하지 않는다.

따라서 자바스크립트 함수는 적절한 인수가 전달되었는지 확인이 필요하다.

 

function add(x, y) {
	if (typeof x !== 'number' || typeof y !== 'number') {
    	throw new TypeError('매개변수에 숫자 타입이 아닌 값이 할당되었습니다.');
    }
    
    returm x + y;
}

console.log(add(2));		// TypeError: 매개변수에 숫자 타입이 아닌 값이 할당되었습니다.
console.log(add('a', 'b'));	// TypeError: 매개변수에 숫자 타입이 아닌 값이 할당되었습니다.

 

'개발 > javascript' 카테고리의 다른 글

함수13 - 반환문  (0) 2023.10.04
함수12 - 매개변수의 최대 개수  (0) 2023.10.04
함수10 - 매개변수와 인수  (0) 2023.10.04
함수09 - 화살표 함수  (0) 2023.10.04
함수08 - Function 생성자 함수  (0) 2023.10.04