[JavaScript] 함수 스코프와 블록 스코프

배고픈메꾸리·2021년 1월 16일
0

Advanced JavaScript

목록 보기
8/10
post-thumbnail

자바스크립트는 함수 스코프를 가지고 있다. 함수를 생성할때마다 새로운 실행 컨텍스트가 생성되고 각 실행 컨텍스트마다 고유한 변수 환경을 가지고 있다. 그러나 대부분의 다른 프로그래밍 언어에는 블록 스코프라는 것이 존재한다.
그것들의 차이는 무엇일까?


if ( 5 > 4 ) {
  var secret = '12345';
}

secret; // 12345


function a() {
  var secret2 = '12345';
}

secret2 ;  // secret2 is not defined

위와 같은 자바스크립트 코드가 있다고 가정해보자. 자바스크립트는 함수 스코프를 사용하기 때문에 secret이라는 변수에 접근할 수 있다. 반대로 만약 블록 스코프를 사용했다면 {} 내부에 선언된 변수를 참조하려고 할 때 에러가 발생했을 것이다.
그러나 ES6에서 letconst 키워드를 사용해서 블록 스코프를 사용할 수 있게 되었다.


if( 5 > 4 ) {
  let secret = '12345';
  const secret2 = '12345';
}

secret;  // secret is not defined
sercret2;  // secret2 is not defined
profile
FE 개발자가 되자

0개의 댓글