9. 함수(Function)

박은서's avatar
Jan 13, 2026
9. 함수(Function)

1. 함수(Function)

1️⃣ 함수란?

1) 개념

특정 작업을 수행하는 코드 묶음
필요할 때 호출하여 반복 사용 가능

2) 기본 형태

function add(a, b) { return a + b; }
  • a, b → 매개변수(parameter)
  • return → 결과 반환
  • 호출: add(1,2)

2️⃣ 함수 정의 방식 (여러 스타일 지원)

1) 함수 선언식

function greet() { console.log("hello"); }
  • 호이스팅 적용됨 (선언 전에 호출 가능)

2) 함수 표현식

const greet = function() { console.log("hi"); }
  • 변수에 함수를 저장
  • 호이스팅 안 됨 (변수 선언 후 사용 가능)

3) 화살표 함수(Arrow Function)

const add = (a, b) => a + b;
  • 코드를 더 간결하게 작성
  • this 바인딩 방식이 다름

4) 익명 함수 (이름 없는 함수)

setTimeout(function() { console.log("delay"); }, 1000);

5) 즉시 실행 함수 (IIFE)

(function() { console.log("run once"); })();

3️⃣ 함수의 핵심 개념

1) 매개변수(Parameter) & 인수(Argument)

  • 함수 선언부 괄호 안에 있는 것 → 매개변수
  • 실제로 전달하는 값 → 인수

2) return

  • 값을 반환하지 않으면 undefined 반환

3) 스코프(scope)

  • 함수 내부에서 선언한 변수는 밖에서 접근 불가
function test(){ let x = 10; } console.log(x); // error

4️⃣ 자바스크립트 함수 = 1급 객체

1) “함수는 1급 객체(First-class Object)”란?

자바스크립트에서는 함수를 값으로 취급한다는 의미
즉, 함수가 일반 변수처럼 사용 가능!

2) 1급 객체 조건

함수는 다음이 모두 가능
① 변수에 저장할 수 있다
const hello = function(){};
② 다른 함수의 인자로 전달할 수 있다
setTimeout(hello, 1000);
③ 함수가 함수를 반환할 수 있다
function outer() { return function inner() {}; }
④ 데이터 구조에 저장 가능
const arr = [hello]; const obj = { fn: hello };
➡ 즉, 함수를 숫자/문자처럼 다룰 수 있다는 뜻!

5️⃣ 함수가 1급 객체라서 가능한 기능

1) 고차 함수(Higher-order function)

함수를 인수로 받거나 반환하는 함수
function repeat(fn) { fn(); } repeat(() => console.log("call"));

2) 콜백(callback)

setTimeout(() => console.log("done"), 500);

3) 함수형 프로그래밍 스타일

[1,2,3].map(x => x * 2);

4) 클로저(Closure)

함수 안 함수가 외부 값을 기억하는 것

6️⃣ 핵심 요약

개념
한 줄 설명
함수(Function)
재사용 가능한 코드 묶음
함수 선언/표현식
정의하는 여러 방법 존재
return
값을 호출한 곳으로 돌려줌
스코프
함수 내부 변수는 외부에서 접근 X
1급 객체
함수가 일반 값처럼 다뤄질 수 있는 객체
➡️ 따라서
JS 함수는 변수에 담기고, 전달되고, 리턴될 수 있는 1급 시민

7️⃣ 실습

1) 함수 기본

// 함수 (상태 x) // f(x) = x+1 function f(x) { return x+1; } let num = f(5); console.log(num);
notion image
➡️ 이건 es5 문법!

2) 연산 함수

function f(x, y) { return x+y; } let num = f(5, 10); console.log(num);
notion image

3) 연산 함수 (5 + “십”)

function f(x, y) { return x+y; } let num = f(5, "십"); console.log(num);
notion image

4) 연산 함수 (5 + “10”)

function f(x, y) { return x+y; } let num = f(5, "10"); console.log(num);
notion image
➡️ 타입이 고정되어 있지 않기 때문에 불안함
Share article