함수선언식과 함수표현식
JavaScript 관련 글입니다.
- JS Event Loop, 자바스크립트 동작 원리
- 호이스팅이란 , var, let, const 차이
- Three.js에 대해
- script, script async, script defer의 차이
- AJAX가 무엇일까?
- 함수선언식과 함수표현식
- null과 undefined의 차이 간단정리
- setTimeout과 setInterval 요약
- this의 여러가지 의미
- Spread Operator(...)?
- JS class Constructor
- ES6 Destructuring Syntax
- default 파라미터 알아보기
- import / export 를 사용한 모듈식 개발방법
- Optional Chaining (?.)
- 프로미스(Promise)에 대해서
- ES8 - async / await
- Symbol 자료형?
- forEach, for in, for of 알아보기
- JSON형식 변환 방법 - JSON.parse(), JSON.stringify()
- 자바스크립트 가비지 컬렉션
- 화살표 함수와 일반함수의 차이
- JavaScript Array.reduce() 간단히 알아보기
오늘은 함수선언식과 함수표현식에 대해서 간단히 정리해보겠습니다.
함수선언식
함수선언식이란 “function” 키워드를 사용해서 함수를 정의하는 방법입니다.
function hello() {
console.log('hello');
}
hello();
그냥 우리가 기본적으로 알고있는 방식입니다.
함수 표현식
함수표현식은 별도의 변수에 함수를 할당하는 방식입니다.
자바스크립트에서는 함수도 하나의 값으로 취급될 수 있습니다.
const hello = function () {
console.log('hello');
}
위처럼 hello라는 변수에 함수를 할당합니다.
const hello = () => console.log('hello');
보통은 익명함수를 사용하며 화살표함수를 많이 사용합니다.
차이점
함수선언식과 함수표현식의 차이점은 무엇일까요?
이는 호이스팅에 영향을 받는지에 차이가 있습니다.
함수선언식은 호이스팅에 영향을 받고, 함수표현식은 호이스팅에 영향을 받지 않습니다.
hello();
function hello() {
console.log('hello');
}
hello함수를 호출하고 이후 함수선언식을 통해서 hello함수를 선언하면 호이스팅이 되기 때문에 에러가 발생하지 않고 정상적으로 실행됩니다.
hello();
const hello = () => {
console.log('hello');
}
반면 위처럼 함수표현식형태로 했을 경우 호이스팅이 되지 않기 떄문에 에러가 발생하게 됩니다.
정리
- 함수선언식이란 “function” 키워드를 사용해서 함수를 정의하는 방법입니다.
- 함수표현식은 별도의 변수에 함수를 할당하는 방식입니다.
- 함수선언식은 호이스팅에 영향을 받고, 함수표현식은 호이스팅에 영향을 받지 않는다.
End.