JavaScript에서는 함수를 여러 가지 방법으로 정의할 수 있습니다. 함수는 특정 작업을 수행하거나 데이터를 처리하고 값을 반환하는 재사용 가능한 코드 조각입니다. 이번 글에서는 함수 선언 방식과 함께, JavaScript의 중요한 개념인 호이스팅(Hoisting, 끌어 올리기, 들어올려 나르기) 에 대해 알아보겠습니다.
함수 선언은 함수를 정의하는 기본적인 방법입니다. 마치 변수 선언이 변수 이름과 값을 바인딩하는 것처럼, 함수 선언은 함수를 식별자(identifier, 데이터의 항목을 식별하고 데이터의 성질을 표시하기 위해 사용하는 문자의 집합) 에 바인딩합니다.

출처: code academy-Function Declarations
function 함수이름() {
// 실행할 코드
}
function greet() {
console.log('안녕하세요!');
}
greet(); // '안녕하세요!' 출력
function 키워드() (매개변수를 받을 수도 있음){} 안의 함수 본문(실행될 코드 블록)자바스크립트에서는 호이스팅(Hoisting, 끌어 올리기, 들어올려 나르기) 이라는 기능 덕분에 함수 선언을 정의하기 전에 호출할 수 있습니다.
greetWorld(); // 출력: Hello, World!
function greetWorld() {
console.log('Hello, World!');
}
위 코드에서 greetWorld() 함수를 호출하는 부분이 함수 선언보다 위에 있음에도 불구하고 정상적으로 실행됩니다. 이것이 바로 호이스팅(Hoisting, 끌어 올리기, 들어올려 나르기) 의 효과입니다.
호이스팅을 이용하면 코드가 예상과 다르게 동작할 수 있습니다. 따라서, 함수 표현식(예: const 함수 = function() {})을 사용하여 호이스팅을 방지하는 것이 좋은 습관입니다.
console.log(myFunc); // 출력: undefined
var myFunc = function() {
console.log('Hello!');
};
myFunc(); // 실행 가능
이처럼 함수 표현식은 호이스팅되지 않기 때문에, 정의 전에 호출할 경우 오류가 발생합니다.
function 키워드를 사용하여 정의합니다.JavaScript에서 Parameters(매개변수)와 Arguments(인수)는 함수의 입력값과 관련된 중요한 개념입니다. 이를 간단히 정리하면:
function greet(name) {
console.log(`Hello, ${name}!`);
}여기서 name이 Parameter(매개변수)입니다.greet('Alice'); // Output: Hello, Alice!여기서 'Alice'가 Argument(인수)입니다.ES6에서는 Default Parameters가 추가되어, 매개변수에 기본값을 설정할 수 있습니다. 이를 통해 함수 호출 시 인수가 전달되지 않거나 undefined인 경우에도 기본값을 사용할 수 있습니다.
= 연산자를 사용하여 매개변수에 기본값을 설정합니다.
예제:
function greeting(name = 'stranger') {
console.log(`Hello, ${name}!`);
}
greeting('Nick'); // Output: Hello, Nick!
greeting(); // Output: Hello, stranger!
greeting('Nick'); // 'Nick'이 매개변수 name에 전달greeting(); // 'stranger'가 기본값으로 사용