[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.