함수 호이스팅
21 May 2021 | javascript함수 호이스팅
자바스크립트의 Guru로 알려진 더글러스 크락포드는 함수 표현식
만을 사용할 것을 권하고 있는데, 이는 함수 호이스팅
때문이다.
함수 표현식이란?
var add = function (){}
이런 형태의 함수식을 말한다.
add(2,3) // 5 (1)
// 함수 선언문 형태로 add() 함수 정의 (2)
function add(x,y){
return x + y;
}
add(3,4); // 7 (3)
위의 코드에서 add()함수가 정의되지 않았음에도 (2)에 정의된 add()함수를 호출하는 것이 가능하다.
이것은 함수가 자신이 위치한 코드에 상관없이 함수 선언문 형태로 정의한 함수의 유효 범위는 코드의 맨 처음부터 시작한다
는 것을 확인 할 수 있다. 이것을 함수 호이스팅
이라고 부른다.
add(2,3) // uncaught type error (1)
// 함수 표현식 형태로 add() 함수 정의 (2)
var add = function add(x,y){
return x + y;
}
add(3,4); // 7 (3)
함수 표현식 형태로 정의되어 있어 호이스팅이 일어나지 않는다.
호이스팅의 발생원인
함수 호이스팅이 발생하는 원인은 자바스크립트의 변수 생성
과 초기화
의 작업이 분리돼서 진행되기 때문이다.
….추후 계속 정리할 예정