일반 함수 정의문 (=이름이 있는 함수)의 경우 호이스팅 기능을 지원한다.
함수의 호이스팅은 함수 정의문보다 함수 호출문이 등장하더라도 해당 함수를 정상적으로 실행하는 것을 말한다.
일반 함수가 정의되면 자바스크립트 엔진 메모리 공간안에 함수의 이름을 이용해 미리 저장해둔다.
저장된 일반 함수는 해당 함수보다 호출문이 먼저 등장하더라도 호이스팅에 의해 정상 실행이 된다.
하지만 익명함수 즉, 이름이 없는 함수의 경우 호이스팅 기능이 적용되지 않는다.
그렇기 때문에 함수정의가 먼저 이루어진 다음 그 후에 함수 호출문이 등장해야만 함수가 실행된다.
- 일반 함수 정의문
함수명(); <- 함수호출문 먼저 등장
function 함수명(){ => 호이스팅에 의해 정상실행됨.
자바스크립트 코드;
}
- 익명 함수 정의문
변수명(); <- 오류발생. 호이스팅 기능이 없어 함수정의문보다
먼저 등장 불가능.
let 변수명 = function(){
자바스크립트 코드;
}
변수명(); <= 익명 함수 호출문. 함수보다 먼저 호출할 수 없다.
함수 스코프란 함수의 유효범위를 뜻한다.
함수도 변수처럼 전역함수(global function)와 지역함수(local function)로 나눠진다.
전역 함수는 자바스크립트 어디서든 사용할 수 있는 함수를 말하며
지역 함수는 함수 스코프 안에서만 사용할 수 있는 함수를 말한다.
[기본형]
<script>
↓ 전역함수. 스크립트 내부 전역에서 사용할 수 있다.
function 함수명(){
자바스크립트 코드;
}
function 함수명1(){
↓ 지역함수. 함수 안에 들어있는 함수로, 지역의 스코프를 가짐.
function 함수명2(){
자바스크립트 코드;
}
}
