Post

[JavaScript] 함수

[JavaScript] 함수

데브자스

JS 함수

함수

  • 객체 자료형 중 하나, 특정한 기능을 제공하기 위한 코드의 집합
  • 호출로 결과 값을 반환받음.
  • 함수 호출부와 선언부로 나뉨.

함수 용어

용어기능
익명 함수이름이 없는 함수 / 변수에 할당해서 사용
선언적 함수이름이 있는 함수 / 일반적으로 사용
매개 변수함수의 입력으로 넘겨주는 값
리턴 값호출한 함수가 돌려주는 값 = 결과 값
arguments입력받은 매개변수를 저장하는 배열
클로저종료된 외부 함수의 변수를 참조하는 함수

익명 함수

이름이 없어서, 변수에 할당해서 사용

1
let 변수명 = function () {...}
  • 호출: 변수명()
  • 실행순서: 스크립트 내부의 내용을 위에서 아래로 읽어서 해석

선언적(명시적) 함수

이름이 있어, 호출 시에도 함수 이름을 사용

1
function 함수명() {...}
  • 호출: 함수명()
  • 실행순서: 다른 내용을 읽기 전에, 먼저 읽혀지고 해석

화살표 함수

function 키워드 대신, 문자를 사용해서 구현

1
2
3
4
5
const 변수명 = () => ... // 한 줄인 경우
const 변수명 = () => {
	...
	return 리턴값;
} // 여러 줄인 경우
  • 좌측: 매개변수
  • 우측: 코드블록

매개 변수에 기본 값 넣기

1
2
3
4
5
function 함수명(매개변수) {...}  // 기본값 없음
function 함수명(매개변수 = "기본값") {...}  // 기본값 있음

함수명()         // 기본값 호출
함수명("다른값") // 다른값 호출

즉시 실행되는 함수

1
(function () {...})();

재귀 함수

자기 자신을 호출하는 함수, 조건이 만족하는 동안 반복

1
2
3
4
function 함수명() {
 ...
 함수명()
}
  • 종료 조건 필수!

콜백 함수

다른 함수의 매개변수로 전달되어 특정 시점에 실행되는 함수

1
2
3
4
5
function 함수명(매개변수, 콜백함수명) {
	콜백함수명()
}

함수명(변수1, 콜백함수)

클로저

외부함수의 변수에 접근할 수 있는 내부함수로 함수가 생성될 때,
스코프를 기억하여 함수가 실행된 이후에도 변수 값 유지

1
2
3
4
5
6
7
8
9
10
11
12
function 외부함수명("외부매개변수") {
	let 외부함수변수 = 0;
	...
	return function ("내부매개변수") { // 내부함수
		...
		return 외부함수변수  // **내부 함수에서도 외부변수 사용 가능**
	}
}

const 클로저명 = 외부함수명("외부값") 
// 호출되어도 변수 값이 독립적으로 유지
클로저명("내부값")
  • 변수 은닉: 외부에서 접근 불가능함
  • 상태 관리(데이터 유지)
  • 고유한 실행환경 유지, 독립적인 변수공간 생성

비동기 함수

Promise (프로미스)

  • 네트워크 요청, 시간이 걸리는 작업 등에 사용
  • async 키워드: Promise를 반환하는 함수
  • setTimeOut(시간): 지정된 시간 후 한 번 실행

try catch 구문

예외 처리를 하기 위해 사용

  • 예: Promise 객체가 reject될 경우 → catch 구문에서 에러 처리
    그외 resolve로 성공할 경우 → try 구문에서 정상 동작
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
async function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const success = Math.random() > 0.5; // 랜덤 성공/실패
            success ? resolve("작업 성공!") : reject("작업 실패!");
        }, 1000);
    });
}

async function getData() {
	try {
		console.log("데이터를 가져오는 중..");
		const data = await fetchData();
		console.log(data);
	} catch (err) {
		console.log("에러발생", err);
	}
}

생성자 함수로 객체 생성

1
2
3
4
function 함수명(매개변수1, 매개변수2) {...}

const a1 = new 함수명(값1, 값2);
const a2 = new 함수명(값3, 값4);
  • 단, 화살표 함수를 생성자 함수로 생성하는 것은 불가능하다!
    • this 키워드를 사용할 수 없음.

This post is licensed under CC BY 4.0 by the author.