선정 이유
- 금요일 저녁 유튜브를 보고 JS의 함수 선언 방식에 대해 정리해보고 싶었음.
JS의 함수 선언 방식
- 함수 선언식
- 함수 표현식
- 화살표 함수
- 기타 등등…
함수 선언식
function sum(a, b) { return a + b; } sum(1, 2);
함수 표현식
const sum = function (a, b) { return a + b; }; sum(1, 2);
함수 선언식과 표현식의 차이점
- 함수 선언식은 호이스팅에 영향을 받지만, 함수 표현식은 호이스팅에 영향을 받지 않는다.
- 선언식으로 함수를 선언하는 경우 세미콜론을 사용하지 않는다.
- 표현식으로 함수를 선언하는 경우 세미콜론을 사용한다.
왜?
아래 두 코드의 결과는 무엇일까?
hello('minjong'); var hello = function(name) { return `hello, ${name}!!!`; };
hello('minjong'); function hello (name) { return `hello, ${name}!!!`; }
자바스크립트에서 문은 최소 실행 단위라고 말하며, 값으로 평가될 수 있는 문을 표현식이라고 한다.
세미콜론은 문의 종료를 나타내기 위해 사용한다. 단,
{}
로 둘러쌓인 블록은 자체 종결성을 갖기 때문에 붙이지 않는다.화살표 함수
const sum = (a, b) => { return a + b; };
함수 표현식과 화살표 함수의 차이점
- 함수 표현식으로 정의한 함수의 this는 함수를 호출할 때 결정된다.
- 화살표 함수의 this는 함수를 정의할 때 결정된다.
- 화살표 함수는 프로토타입 프로퍼티를 갖지 않는다.