스크립트를 작성하다 보면 유사한 동작을 하는 코드가 여러 곳에서 필요할 때가 많습니다.
사용자가 로그인이나 로그아웃을 했을 때 안내 메시지를 보여주는 동작 같은 경우 말이죠.
함수는 프로그램을 구성하는 주요 '구성 요소(building block)'입니다. 함수를 이용하면 중복 없이 유사한 동작을 하는 코드를 여러 번 호출할 수 있습니다.
우리는 앞서 다양한 예시에서 alert(message)
, prompt(message, default)
, confirm(question)
과 같은 내장 함수를 사용해 보았습니다. 이번 챕터에선 함수를 직접 만드는 방법에 대해 알아보겠습니다.
매개변수에 값을 전달하지 않으면 그 값은 undefined
가 됩니다.
예시를 통해 이에 대해 알아봅시다. 위에서 정의한 함수 showMessage(from, text)
는 매개변수가 2개지만, 아래와 같이 인수를 하나만 넣어서 호출할 수 있습니다.
showMessage("Ann");
이렇게 코드를 작성해도 에러가 발생하지 않습니다. 두 번째 매개변수에 값을 전달하지 않았기 때문에 text
엔 undefiend
가 할당될 뿐입니다. 따라서 에러 없이 "Ann: undefined"
가 출력됩니다.
매개변수에 값을 전달하지 않아도 그 값이 undefined
가 되지 않게 하려면 '기본값(default value)'을 설정해주면 됩니다. 매개변수 오른쪽에 =
을 붙이고 undefined
대신 설정하고자 하는 기본값을 써주면 되죠.
function showMessage(from, *text = "no text given"*) {
alert( from + ": " + text );
}
showMessage("Ann"); // Ann: no text given
이젠 text
가 값을 전달받지 못해도 undefined
대신 기본값 "no text given"
이 할당됩니다.
위 예시에선 문자열 "no text given"
을 기본값으로 설정했습니다. 하지만 아래와 같이 복잡한 표현식도 기본값으로 설정할 수도 있습니다.
function showMessage(from, text = anotherFunction()) {
// anotherFunction()은 text값이 없을 때만 호출됨
// anotherFunction()의 반환 값이 text의 값이 됨
}
함수는 어떤 동작
을 수행하기 위한 코드를 모아놓은 것입니다. 따라서 함수의 이름은 대개 동사입니다. 함수 이름은 가능한 한 간결하고 명확해야 합니다. 함수가 어떤 동작을 하는지 설명할 수 있어야 하죠. 코드를 읽는 사람은 함수 이름만 보고도 함수가 어떤 기능을 하는지 힌트를 얻을 수 있어야 합니다.