기본값
매개변수에 값을 전달하지 않으면 그 값은 undefined가 된다.
function showMessage(from, text) {
alert( from + ': ' + text );
}
showMessage("Ann");
매개변수에 값을 전달하지 않아도 그 값이 undefined가 되지 않게 하려면
기본값(default value)을 설정해주면 된다.
매개변수 오른쪽에 =을 붙이고 undefined 대신 설정하고자 하는 기본 값을 써준다.
function showMessage(from, text = 'no text given') {
alert( from + ': ' + text );
}
showMessage("Ann");
매개변수 기본값을 설정할 수 있는 또 다른 방법
가끔은 함수 선언부에서 매개변수 기본값을 설정하는 것 대신 함수가 실행되는 도중에 기본값을
설정하는게 논리에 맞는 경우가 생기기도 한다.
이런 경우에는 일단 매개변수를 undefined와 비교하여 함수 호출 시 매개변수가 생략되었는지 확인한다.
function showMessage(text) {
if (text === undefined) {
text = '빈 문자열';
}
alert(text);
}
showMessage(); // 빈 문자열
if문을 쓰는 것 대신 논리연산자를 사용할 수 도 있다.
//매개변수가 생략되었거나, 빈 문자열이 넘어오면 빈 문자열 할당.
function showMessage(text) {
text = text || '빈 문자열';
}
이 외에도 모던 자바스크립트 엔진이 지원하는 nullish 병합 연산자 ?? 를 사용하면
0처럼 falsy로 평가되는 값들을 일반 값처럼 처리할 수 있어서 좋다.
// 매개변수 'count'가 넘어오지 않으면 'unknown'을 출력해주는 함수
function showCount(count) {
alert(count ?? "unknown");
}
showCount(0); 0
showCount(null); // unknown
showCount(); // unknown
반환값(return value)
함수를 호출했을 때 함수를 호출한 그 곳에 특정 값을 반환할 수 있다.
이때 특정 값을 반환 값(return value)이라고 부른다.
인수로 받은 두 값을 더해주는 간단한 함수를 만들어 반환 값에 대해 알아보도록 하자.
function sum(a, b) {
return a + b;
}
let result = sum(1, 2);
alert( result ); // 3
지시자 return은 함수 내 어디서든 사용할 수 있다.
실행 흐름이 지시자 return을 만나면 함수 실행은 즉시 중단되고
함수를 호출한 곳에 값을 반환한다.
위 예시에서는 반환값을 result에 할당했다.
function checkAge(age) {
if (age >= 18) {
return true;
} else {
return confirm('보호자의 동의를 받으셨나요?');
}
}
let age = prompt('나이를 알려주세요.', 18);
if (checkAge(age)) {
alert('접속허용');
} else {
alert('접속불가');
}
return문이 없거나 return 지시자만 있는 함수는 undefined를 반환한다.
return문이 없는 함수도 무언가를 반환한다. 바로 undefined이다.
function doNothing() {
/* empty */
}
alert(doNothing() === undefined); // true
return 지시자만 있는 경우도 undefined를 반환한다.
return은 return undefined와 동일하게 작용한다.
function doNothing() {
return;
}
alert(doNothing() === undefined); // true
return과 값 사이에 절대 줄을 삽입하면 안된다.
return문은 끝에 세미콜론을 자동으로 넣기 때문에
표현식을 여러줄로 작성하고 싶다면 표현식이 return 지시자가 있는 줄에서 시작하도록 작성해야 한다.
return (
some + long + expression
+ or +
whatever * f(a) + f(b)
)
'Javascript' 카테고리의 다른 글
변수(Variables)의 원시타입과 객체타입의 메모리 할당 (0) | 2022.05.11 |
---|---|
(함수) 이름짓기 (0) | 2022.05.10 |
(함수) 선언, 지역변수, 외부변수, 전역변수, 매개변수 (0) | 2022.05.10 |
(while과 for 반복문) 소수(prime number) 출력하기 (0) | 2022.05.10 |
(논리 연산자) 로그인 구현하기 (0) | 2022.05.10 |