"함수"
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'
위 코드는 자바스크립트 문법상 어떠한 문제도 없으므로 자바스크립트 엔진은 아무런 이의 제기 없이 위 코드를 실행할 것이다. 이러한 상황이 발생한 이유는 아래와 같다.
- 자바스크립트 함수는 매개변수와 인수의 개수가 일치하는지 확인하지 않는다.
- 자바스크립트는 동적 타입 언어이다. 따라서 자바스크립트 함수는 매개변수의 타입을 사전에 지정하지 않는다.
따라서 자바스크립트 함수는 적절한 인수가 전달되었는지 확인이 필요하다.
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 |