[ JavaScript ] ES6 : Block scope | var, let 변수 유효범위

2021. 2. 15. 19:39·Archive/Develop
728x90
반응형

 

 

1. Scope

 

: 변수의 유효범위.

 

 

 

var 의 변수 유효범위

 

=> 블록 스코프가 아닌 function 스코프이다.

 

 

 

var num = 1;
function printNum(){
  console.log(num);
  var num = 2;
  console.log(num);
};
printNum(); //2

 

 

 

 

 

 

 

function 레벨에서 호이스팅이 발생하고 있는 것을 확인할 수 있다.

 

 

 

호이스팅 : var, let, const 등 모든 선언문이 올려져 해당 변수가 속한 스코프의 최상단으로 올리는 현상.

 

 

 

함수가 아닌 블록일 경우의 예를 보겠다.

 

 

 

var test = '1';
if(true){
	var test = '2';
    console.log(test);
};
console.log(test);

 

 

 

 

 

 

2 가 두 번 출력되는 것을 알 수 있다.

 

 

1번 라인의 test 는 전역 스코프에,

 

3번라인의 test는 지역 스코프에 선언된 변수이다.

 

 

지역 스코프에 선언된 test 가 호이스팅되어 전역 스코프에 선언된 test 값을 변경하는 것을 볼 수 있다.

 

 

 

 

2. let 선언자

 

 

위의 문제를 해결하기 위한 방법으로, let 선언자를 사용하는 방법이 있다.

 

 

var test = '1';
if(true){
	var test = '2';
    console.log(test);
};
console.log(test);

 

 

 

 

 

let 키워드를 사용했기 때문에 전역 스코프와 블록 스코프를 구별할 수 있다.

 

따라서 위와 같은 출력을 내는 것을 확인할 수 있는 것이다.

 

 

 

결론짓자면, let 은 변수의 유효범위를 블록 스코프로 처리한다.

 

따라서 ES6 에서는 가급적 var 를 지양하고 let 과 const 를 사용하는 것이 좋다.

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] ES6 : 템플릿 문자열 표현식 | 백틱  (0) 2021.02.15
[ JavaScript ] ES6 : TDZ (Temporal Dead Zone) | let 참조에러  (0) 2021.02.15
[ JavaScript ] ES6 : let 과 const 개념 | let & const 공통점/차이점  (0) 2021.02.14
[ React ] ProtoTypes 설치하기 | ProtoTypes install  (0) 2021.02.13
[ React ] 동적 컴포넌트 생성 | Each child in a list should have a unique "key" prop 에러 해결  (2) 2021.02.12
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] ES6 : 템플릿 문자열 표현식 | 백틱
  • [ JavaScript ] ES6 : TDZ (Temporal Dead Zone) | let 참조에러
  • [ JavaScript ] ES6 : let 과 const 개념 | let & const 공통점/차이점
  • [ React ] ProtoTypes 설치하기 | ProtoTypes install
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    oracle db
    보안뉴스
    javascript
    자바스크립트 API
    백준 풀이
    비박스
    백준 파이썬
    백준
    카카오 100일 프로젝트
    파이썬
    자바스크립트 객체
    Oracle
    자바스크립트
    Git
    파이썬 문제
    장고
    파이썬 알고리즘
    오라클
    Python
    C++
    파이썬 백준
    파이썬 기초 문제
    Codeup
    파이썬 기초
    Django
    백준 문제풀이
    코드업 파이썬 기초 100제
    코드업 기초
    docker
    코드업
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] ES6 : Block scope | var, let 변수 유효범위
상단으로

티스토리툴바