728x90
반응형
- JavaScript에서 함수를 사용할 때는 두가지 방법이 있다.
- 함수 선언식
- 함수 표현식
1. 함수 선언식 예
a(); //a가 출력됩니다.
function a(){
console.log('a가 출력됩니다.');
}
2. 함수 표현식 예
b(); //error
const b = function () {
console.log('b가 출력됩니다.');
}
- JavaScript는 2번 함수 표현식처럼 함수를 변수에 담을 수 있다.
- 여기서 중요한건 2번 '함수 표현식'은 에러가 발생한다는 점이다.
- 왜 에러가 발생할까? '호이스팅' 때문이다.
- 호이스팅이란?
호이스팅은 JavaScript에서 실행 콘텍스트(특히 생성 및 실행 단계)가 어떻게 동작하는가에 대한 일반적인 생각으로 여겨집니다.
이 친구가 하는 그 '호이'가 아니다.
- 1번 함수 선언식의 경우 JavaScript에서 실행될 때 a라는 함수를 실행하기 전 a함수를 먼저 확인하고 실행하는 반면
- 2번 함수 표현식의 경우 b라는 변수에 익명함수(이름이 없는 함수)가 들어가 있기 때문에 먼저 변수 선언이 이뤄지고 함수 실행이 이뤄진다, 그래서 2번처럼 실행시키고 싶다면 순서를 아래와 같이 바꿔주자
const b = function () {
console.log('b가 출력됩니다.');
}
b(); //b가 출력됩니다.
728x90
반응형
'Study > JAVASCRIPT' 카테고리의 다른 글
JavaScript 에러 - ERR_ABORTED 404 ~ (0) | 2021.07.06 |
---|---|
JavaScript 에러 - Failed to execute 'createObjectURL' on 'URL': Overload resolution failed. ~ (0) | 2021.07.06 |
JavaScript 에러 - Maximum call stack size exceeded ~ (0) | 2021.07.06 |
JavaScript - 그레이브액센트(어퍼스트로피, `) (0) | 2019.01.14 |
JavaScript - 인터넷익스플로러에서 console.log 사용 (1) | 2019.01.14 |
댓글