JS LAB
JS 2.1 · 2부. 함수와 스코프

함수 만들기와 호출하기

함수를 선언하고 호출합니다. 매개 변수와 반환값을 다룹니다.

예상 학습 시간 14분 실행 단추가 있는 예제는 고쳐서 실행해 볼 수 있습니다 난이도 입문
개념 설명

코드에 이름을 붙입니다

1부에서는 변수로 에 이름을 붙였습니다. 함수는 코드에 이름을 붙입니다. 한 번 만들어 두면 필요할 때마다 그 이름으로 부릅니다.

모양
function 이름(매개 변수) {
	할 일
	return 돌려줄 값;
}

매개 변수(parameter) 는 부를 때 받아 오는 값이고, return 은 돌려주는 값입니다. 둘 다 없어도 됩니다.

최소 예제 · 편집 가능

인사말 함수

script.js
function greet(name) {
	return `${name}님 안녕하세요`;
}

console.log(greet("홍길동"));
console.log(greet("김철수"));
출력
홍길동님 안녕하세요 김철수님 안녕하세요

만드는 것과 부르는 것은 다릅니다. function 으로 적은 부분은 만들어 두기만 하고 실행되지 않습니다. greet("홍길동") 처럼 이름 뒤에 괄호를 붙여야 그때 실행됩니다.

상세 사용법

매개 변수가 여럿일 때

쉼표로 구분해 적습니다. 부를 때 넘기는 차례가 곧 받는 차례입니다.

script.js
function area(width, height) {
	return width * height;
}

console.log(area(3, 4));
console.log(area(10, 5));
출력
12 50
상세 사용법

돌려주지 않는 함수

return 이 없으면 undefined 를 돌려줍니다. 화면에 내보내기만 하고 값이 필요 없는 함수가 그렇습니다.

script.js
function shout(text) {
	console.log(text + "!");
}

const result = shout("안녕");
console.log(result);
출력
안녕! undefined

return 을 만나면 함수가 그 자리에서 끝납니다. 뒤에 적은 줄은 실행되지 않습니다.

상세 사용법

이름만 적으면 무엇이 나오나

괄호를 빠뜨리면 함수가 실행되지 않고 함수 자체가 나옵니다. 오류가 나지 않아 알아채기 어렵습니다.

script.js
function greet() {
	return "안녕하세요";
}

console.log(greet);
console.log(greet());
출력
[Function: greet] 안녕하세요
흔한 실수

처음에 자주 걸리는 것

1. 부를 때 괄호를 빠뜨립니다

greet 는 함수 자체이고 greet() 가 실행입니다. 오류가 나지 않으므로 결과가 이상하면 이것부터 확인하세요.

2. 출력과 반환을 헷갈립니다

console.log 는 화면에 내보낼 뿐 값을 돌려주지 않습니다. 계산한 값을 밖에서 쓰려면 return 이 있어야 합니다.

function area(w, h) {
    console.log(w * h);   // 화면에는 나오지만 돌려주지는 않습니다
}

const size = area(3, 4);   // size 는 undefined 입니다
3. return 뒤에 코드를 적습니다

return 을 만나면 함수가 끝납니다. 그 뒤의 줄은 영영 실행되지 않습니다.

실습 문제

직접 해보기

1. 나이를 받아 성인인지 판정하기 난이도 하

나이를 받아 19 이상이면 "성인", 아니면 "미성년자"돌려주는 함수를 만들고 두 번 불러 출력하세요.

출력하는 것이 아니라 돌려주는 것입니다. 값 하나를 고르는 자리이므로 삼항 연산자도 됩니다(1.9).
function checkAge(age) { return age >= 19 ? "성인" : "미성년자"; } console.log(checkAge(20)); console.log(checkAge(15));
2. 배송비를 함수로 옮기기 난이도 중

1.8 에서 만든 배송비 계산을 함수로 만드세요. 주문 금액을 받아 결제 금액을 돌려줍니다. 50000원 이상이면 배송비가 없고, 아니면 3000원입니다.

function checkout(price) { const fee = price >= 50000 ? 0 : 3000; return price + fee; } console.log(checkout(42000)); // 45000 console.log(checkout(60000)); // 60000
요약

이 단원의 정리

  • 함수는 코드에 이름을 붙여 두고 필요할 때 부르는 것입니다.
  • 만드는 것과 부르는 것은 다릅니다. 부를 때는 이름 뒤에 괄호를 붙입니다.
  • 매개 변수는 받아 오는 값, return 은 돌려주는 값입니다.
  • return 이 없으면 undefined 를 돌려줍니다.
  • 출력과 반환은 다릅니다. 밖에서 쓸 값은 return 해야 합니다.