함수
- 함수 내부에서 선언한 변수인 지역 변수(local variable)는 함수 안에서만 접근 가능
- 함수 내부에선 함수 외부의 변수인 외부 변수(outer variable)에 접근 및 수정 가능
- 함수 내부에 외부 변수와 동일한 이름을 가진 변수가 선언되었다면, 내부 변수는 외부 변수를 가림
- 함수 외부에 선언 되는 변수는 전역 변수(global variable)라고 불리며, 같은 이름을 가진 지역 변수에 의해 가려지지만 않는다면 모든 함수에서 접근 가능
- 변수는 연관되는 함수 내에서 선언하고, 전역 변수는 되도록 사용하지 않는 것이 좋음
- 함수는 간결하고, 한 가지 기능만 수행할 수 있게 쪼개서 생성하여 가독성 상승
let showPrimes = (n) => {
nextPrime: for (let i = 2; i < n; i++) {
for (let j = 2; j < i; j++) {
if (i % j === 0) continue nextPrime;
}
alert(i);
}
}
let showPrimes = (n) => {
for (let i = 2; i < n; i++) {
if (!isPrime(i)) continue;
alert(i);
}
}
let isPrime = (n) => {
for (let i = 2; i < n; i++) {
if (n % i === 0) return false;
}
return true;
}
함수 기본값
- 매개변수(parameter)에 값을 전달하지 않으면
undefined
가 할당되는데, 이를 막기 위해서 기본값(default value)을 설정 가능
- 매개변수 오른쪽에
=
을 붙이고 undefined
대신 설정하고자 하는 기본값 작성
let showMessage = (who, what = "no text given") => {
alert(who + ": " + what);
}
showMessage("Chungsik");
let showMessage = (who, what) => {
what = what || "no text given"
alert(who + ": " + what);
}
showMessage("Chungsik");
let showMessage = (who, what) => {
what = what ?? "no text given"
alert(who + ": " + what);
}
showMessage("Chungsik");
- 기본값으로 함수와 같은 복잡한 표현식도 설정 가능
함수 반환값
return
문이 없거나 return
지시자만 있는 함수는 undefined
를 반환
let doNothing = () => { }
alert(doNothing() === undefined);
let doNothing = () => {
return;
}
alert(doNothing() === undefined);
return
문 끝에는 자동으로 세미콜론이 붙기 때문에, return
문과 값 사이에 줄 삽입 금지
- 반환하려는 표현식이 길어 여러 줄에 걸쳐 사용하고 싶을 때는 여는 괄호
()
를 사용
return (
hello + world
+ welcome + to + korea +
f(a) + f(b)
)
함수 만들기 예시
x
의 n
제곱을 반환해주는 함수, pow(x,n)
n
은 1
이상의 자연수, 이외에는 자연수를 입력하라는 경보(alert)창 생성
let pow = (x, n) => {
let result = x;
for (let i = 1; i < n; i++) {
result *= x;
}
return result;
}
let x = prompt("x?", "");
let n = prompt("n?", "");
if (n < 1) {
alert(`${n}은 양의 정수이어야 합니다.`);
} else {
alert(pow(x, n));
}