자바스크립트 JavaScript
6. 함수(Function)란 무엇인가? 선언식 vs 표현식
안녕하세요! 태마입니다.
JavaScript 기초 강좌입니다.
강좌의 경우
1. 주제 간단 정리
2. 상세 주제 정리
으로 이루어져 있습니다.
자바스크립트 JavaScript
포스팅 시작하겠습니다 :)
1. 주제 간단 정리
1. 함수(Function)란?
함수(Function)란 특정 작업을 수행하는 코드 블록입니다.
한 번 정의하면 여러 번 실행할 수 있으며, 코드를 모듈화하고 재사용성을 높이는 데 필수적인 요소입니다.
📌 반복되는 코드를 줄이고, 유지보수를 쉽게 만들어주는 강력한 도구!
2. JavaScript에서 함수를 선언하는 방법
JavaScript에서 함수를 선언하는 방법은 크게 3가지가 있습니다.
함수 선언 방식설명예제
함수 선언식 (Function Declaration) | function 키워드를 사용하여 선언 | function name() {} |
함수 표현식 (Function Expression) | 변수에 함수를 할당하여 선언 | const name = function() {}; |
화살표 함수 (Arrow Function) | => 문법을 사용하는 간결한 함수 표현 | const name = () => {}; |
📌 각 방식마다 특징과 차이가 존재하므로, 올바르게 사용해야 함!
3. 함수 선언식 (Function Declaration)
함수 선언식은 function 키워드를 사용하여 함수를 정의하는 방식입니다.
function greet() {
console.log("안녕하세요!");
}
greet(); // "안녕하세요!"
✅ 특징:
✔ 코드 실행 전에 함수가 메모리에 저장됨 → 호이스팅(Hoisting) 가능
✔ 함수 이름을 명확하게 정의할 수 있음
📌 호이스팅이 지원되므로, 함수가 선언되기 전에 호출해도 정상 실행됨!
4. 함수 표현식 (Function Expression)
함수 표현식은 함수를 변수에 할당하여 선언하는 방식입니다.
const greet = function() {
console.log("안녕하세요!");
};
greet(); // "안녕하세요!"
✅ 특징:
✔ 함수가 변수에 저장되므로, 호이스팅이 적용되지 않음
✔ 익명 함수(Anonymous Function)를 사용할 수 있음
📌 함수 표현식은 선언 전에 호출할 수 없다! (ReferenceError 발생)
5. 화살표 함수 (Arrow Function)
ES6(2015)에서 추가된 화살표 함수는 간결한 함수 표현을 제공합니다.
const greet = () => console.log("안녕하세요!");
greet(); // "안녕하세요!"
✅ 특징:
✔ function 키워드 없이 =>를 사용하여 함수를 정의
✔ this를 다르게 처리 (2부에서 자세히 설명)
✔ 코드가 간결해지지만, 모든 상황에서 사용하기 적절하지 않음
📌 간결한 표현이 가능하지만, this 바인딩이 다르게 동작하므로 주의해야 함!
✅ 여기까지 JavaScript의 함수 개념과 선언 방법을 배웠습니다!
👉 "그렇다면, 함수의 내부 동작 원리와 'this' 키워드는 어떻게 다를까?"
✅ 2부에서 함수의 실행 컨텍스트, this의 동작 방식, 콜백 함수까지 상세히 배워봅시다!
2. 상세 주제 정리
1. 실행 컨텍스트와 함수 호출 방식
JavaScript에서 함수가 호출되면, **실행 컨텍스트(Execution Context)**가 생성됩니다.
즉, 함수가 실행될 때 메모리에 어떤 일이 일어나는지 이해하는 것이 중요합니다.
✅ 1) 실행 컨텍스트의 흐름
function first() {
console.log("첫 번째 함수 실행");
}
function second() {
first();
console.log("두 번째 함수 실행");
}
second();
✅ 결과:
첫 번째 함수 실행
두 번째 함수 실행
📌 호출된 함수는 실행 컨텍스트가 스택(Stack) 형태로 관리됨!
2. this 키워드의 동작 원리
JavaScript에서 this는 함수가 호출되는 방식에 따라 달라집니다.
✅ 1) 일반 함수에서 this
function showThis() {
console.log(this);
}
showThis(); // 브라우저에서는 `window`, Node.js에서는 `global`
📌 일반 함수에서 this는 window 또는 global을 가리킴!
✅ 2) 객체 메서드에서 this
const obj = {
name: "Alice",
showThis: function() {
console.log(this.name);
}
};
obj.showThis(); // "Alice"
📌 객체의 메서드에서 this는 해당 객체를 가리킴!
✅ 3) 화살표 함수에서 this
const obj = {
name: "Alice",
showThis: () => {
console.log(this.name);
}
};
obj.showThis(); // undefined
📌 화살표 함수는 this를 바인딩하지 않고, 상위 스코프의 this를 사용함!
3. 콜백 함수 (Callback Function)란?
콜백 함수란 다른 함수의 인자로 전달되어 특정 시점에 실행되는 함수입니다.
function sayHello(callback) {
console.log("안녕하세요!");
callback();
}
function greet() {
console.log("반갑습니다!");
}
sayHello(greet);
✅ 결과:
안녕하세요!
반갑습니다!
📌 콜백 함수는 비동기 작업, 이벤트 처리 등에 자주 사용됨!
✅ 지금까지 JavaScript의 함수 실행 컨텍스트, this, 콜백 함수를 상세히 배웠습니다!
👉 "그렇다면, 콜백 함수를 활용한 클로저(Closure)는 어떻게 동작할까?"
✅ 다음 회차에서 클로저 개념과 활용법을 깊이 있게 배워봅시다! 🚀
'IT Developer > JavaScript' 카테고리의 다른 글
JavaScript 기초 <10. this는 왜 이렇게 헷갈릴까? (실제 사례로 이해하기)> (1) | 2025.03.12 |
---|---|
JavaScript 기초 <9. ES6 이후 추가된 주요 문법 (화살표 함수, 템플릿 리터럴 등)> (1) | 2025.03.11 |
JavaScript 기초 <8. 비동기 처리의 기초 (setTimeout, setInterval, Promise)> (1) | 2025.03.10 |
JavaScript 기초 <7. 콜백 함수와 클로저(Closure)의 이해> (1) | 2025.03.09 |
JavaScript 기초 <5. 조건문과 반복문 제대로 이해하기> (1) | 2025.03.07 |
JavaScript 기초 <4. 연산자(산술, 논리, 비교, 비트 연산자 등) 한방 정리> (1) | 2025.03.06 |
JavaScript 기초 <3. JavaScript의 데이터 타입 완벽 정리> (2) | 2025.03.05 |
JavaScript 기초 <2. 변수와 상수의 차이 (var, let, const)> (1) | 2025.03.04 |