[JS] 함수 선언식과 함수 표현식, 그리고 호이스팅

자바스크립트에서는 함수가 순서대로 선언되지 않아도 읽을 수 있다. 선언된 함수가 호출보다 아래 있더라도 함수선언식을 사용한다면, 호이스팅에의해 먼저 읽고 실행되는 것이다.

Function Declaration

function funcDeclaration() {
  return 'this is a Declaration';
}; 
// 함수 선언식은 호이스팅이 된다.

Function Expression

funcExpressiong = function() {
  return 'this is a Expression';
};
// 함수 표현식은 호이스팅이 불가하다.

Hoisting

코드에서 선언하기 전에 함수를 사용할 수 있게 되는 것이다.
호출한 catName이라는 함수의 매개변수 name에 해당하는 전달인자값을 아직 받은 상태가 아닌데 호출할 수 있다. 함수 선언식이 사용되었기 때문에 가능하다.

function catName(name) { // 함수 선언식
  console.log("My cat\'s name is " + name);
}

catName("Tigger");

//"My cat's name is Tigger"

그러나 만약 함수 표현식을 사용했다면, catName의 인자를 받아오지 못할 것이다.

const catName = function() { // 함수 표현식
console.log('My cat\'s name is ' + name);
}
catName('Tiger')'

// "My cat's name is"

좋은 웹페이지 즐겨찾기