함수 선언식과 표현식

myung hun kang·2022년 11월 9일
0

선언식 -> function foo( ) { }

표현식 -> let foo = function ( ) { }

선언식은 호이스팅에 영향을 받지만
표현식은 영향을 받지 않는다.

그리고 표현식은 클로져사용, 콜백함수로 사용 등 장점이 많다.
(화살표 함수도 표현식과 같이 호이스팅 되지 않는다.)

렉시컬 스코프

JS에서 함수를 선언한 시점에 따라 상위 스코프를 결정한다는 뜻이며 다른말로 정적 스코프라고도 한다.

이부분은 this와ㄷ 관련이 있다.

var x = 1
function first() {
  var x = 10;
  second();
}

function second(){
  console.log(x)
}

first()

second()

위와 같은 식에서 결과값은 어떻게 나올까?

실행한 값은

1 , 1

이 나온다.

first( )를 했을 때 second 안의 x는 10 같지만 JS는 선언된 시점의 상위가 렉시컬스코프(정적스코프) 이므로 second의 상위는 global 스코프이다.

따라서 second 안의 x는 어디서든 1이다.

profile
프론트엔드 개발자입니다.

0개의 댓글