티스토리 뷰

함수란?

함수란 어떤 작업을 수행하기 위해 필요한 문(statement)들의 집합을 정의한 코드 블록.
→ 함수란 원하는 작업들을 나열한 것들의 주머니

 

1. 함수의 필요성


재사용성, 코드 가독성, 유지보수 용이성, 추상화
1.재사용성:
동일한 코드를 여러번 반복할 필요가 없고, 한 번 작성한 코드를 반복해서 사용
2. 코드 가독성:
읽기 쉽게 만들어서 코드의 각 부분이 어떤 역할을 하는지 명확하게 구분할 수 있음.
3. 유지보수 용이성:
반복적으로 사용되는 부분을 함수로 묶어두면, 나중에 그 기능을 수정할 때, 일일이 코드를 전부 수정할 필요 없이 함수만 수정하면 됨.
4. 추상화:
함수는 복잡한 작업을 추상화 해서 그 작업을 하나의 단위로 다룰 수 있게 해줌.
복잡한 로직을 간단한 함수로 대체할 수 있어, 전체 프로그램의 복잡성을 줄일 수 있음.

 

2. 함수의 요소

 1) 함수 정의

함수를 정의하는 방식 3가지
• 함수 선언문
• 함수 표현식
• Function 생성자 함수

 

1-1) 함수 선언문

  • function 키워드를 시작하며, 그 뒤에 함수 이름이 옴.
  • 호이스팅 됨. 코드의 어느 위치에서든 호출할 수 있음.

1-2) 함수 표현식

  • 함수를 변수에 할당하는 형태.
  • 호이스팅 되지 않음. 정의된 후에만 사용할 수 있음.

이 두 가지 바 방법은 함수가 정의되는 방식과 그 함수가 호출될 수 있는 시점에서 차이가 있음.

 

함수 선언문 vs 함수 표현식

// 함수 선언문
function greet1(name) {
    return `안녕하세요, ${name}님!`;
}

// 함수 표현식
const greet2 = function(name) {
    return `안녕하세요, ${name}님!`;
};

// 사용 예시
console.log(greet1("철수")); // 출력: 안녕하세요, 철수님!
console.log(greet2("영희")); // 출력: 안녕하세요, 영희님!

// 호이스팅 차이 예시
console.log(hoistedFunc("민수")); // 정상 작동: 안녕하세요, 민수님!
// console.log(notHoistedFunc("민수")); // 오류: notHoistedFunc is not a function

function hoistedFunc(name) {
    return `안녕하세요, ${name}님!`;
}

const notHoistedFunc = function(name) {
    return `안녕하세요, ${name}님!`;
};

 

주요 차이점:
• 문법: 선언문은 독립적인 문장, 표현식은 할당문의 일부임.
• 호이스팅: 선언문은 호이스팅되어 어디서든 사용 가능하지만, 표현식은 정의된 후에만 사용 가능함.
• 익명성: 표현식은 익명 함수를 사용할 수 있지만, 선언문은 항상 이름이 필요함.

 

함수 표현식의 종류

1. 일반 함수 표현식

2. 익명 함수

3. 즉시 실행 함수

4. 화살표 함수

'일반 함수'라는 표현은 특정한 문맥에 따라 다름. 

 

1. 일반 함수 표현식: 함수 표현식에서 이름을 가진 함수를 정의하는 경우도 있으며, 이를 
"이름이 있는 함수 표현식"이라고 함. 

2. 익명 함수: 이름이 없는 함수.

3. 즉시 실행 함수: 함수의 정의와 호출을 동시에 하는 것. 
(function() {
    console.log('이것은 즉시 실행 함수입니다.');
})();


4. 화살표 함수: => 사용. 코드의 가독성을 높이고, 콜백 함수 유용하게 사용. 
'this'의 동작이 일반 함수와 다르게 작동함.

 

--즉시 실행 함수
(function() {
    var message = 'Hello, World!';
    console.log(message);
})();

// message 변수는 IIFE 내부에서만 존재하며, 외부에서 접근할 수 없습니다.

 

즉시 실행 함수 사용 이유: 

  • 변수의 스코프를 제한: 전역 변수 오염 방지.
  • 모듈화: 함수나 코드를 별도의 블록으로 캡슐화.
  • 실행이 필요 없는 즉시 실행 코드 작성: 초기화 코드나, 일회성 코드 등을 작성할 때 사용.