[ Javascript ] - 함수 표현식 함수 선언문 호이스팅

슬로그·2023년 6월 21일
0

JS

목록 보기
4/7
post-thumbnail

함수 선언문이 자바스크립트 코드 제일 위 상단에 있는 것처럼 동작하는 것을 호이스팅 이라고 한다.

  • 함수 표현식
	var sub = function(x,y){
		return x - y ;
    };
  • 함수 선언문
	function(x,y){
		return x + y ;
    };

함수 선언문과 함수 표현식에 호이스팅은 약간의 차이가 있다.

//함수 참조
console.dir(add); // add(x,y)
console.dir(sub); // undefined

//함수 호출
console.log(add(3,4)); //7
console.log(sub(3,4)); // TypeError: sub is not a function

// 함수 선언문
function add(a,b){
	return a + b;
}

// 함수 표현식 
var sub = function(a,b){
	return a - b
}

함수 선언문인 add는 선언문 이전에 호출될수있고 ,
함수 표현식은 표현식 이전에 호출 될 수 없다.

이유는 생성 시점이 다르기 때문이다.

함수 호이스팅과 변수 호이스팅은 공통점과 다른점이 있다.

함수 호이스팅과 변수 호이스팅

  • 공통점 : 함수 선언문과 변수 선언문은 선언 이전에 자바스크립트 엔진에 의해 먼저 실행되어 식별자를 생성한다
  • 차이점 : 하지만 var 키워드로 선언된 변수는 undefined로 초기화 되어진다.

함수 표현식은 변수 선언문 + 변수 할당문을 축약한 표현과 동일하게 동작함으로 함수 표현식으로 함수를 정의하면 함수 호이스팅이 발생하는 것이 아니라 변수 호이스팅이 발생하게 된다.

profile
빨리가는 유일한 방법은 제대로 가는것

0개의 댓글