본문 바로가기
FrontEnd/Javascript

[JS] Javascript 변수

by pplucy 2021. 1. 19.

 

* 자바스크립트의 변수는 var, let, const가 있다.

 

일반변수 -> var, let

상수 -> const

 

 

 * 전역변수 : 전역객체(window)에서 속성으로 등록된 변수

   전역객체 : 자바스크립트 안에서 선언하는 변수, 함수, 객체를 속성으로 관리하는 객체

 

 

 

1) var : 재선언 O/ 재할당 O/ 함수레벨 스코프/ 변수 호이스팅 O 

 

2) let : 재선언 X/ 재할당 O/ 블록레벨 스코프 / 변수 호이스팅 X

 

3) const : 재선언 X/ 재할당 X/ 블록레벨 스코프/ 변수 호이스팅 X

 

 

  - 재선언이란, 예를들어 자바에서는

     Stirng test = "A";

     String test = "B";

     이렇게 사용하면 에러가 뜨지만 자바스크립트에서는 가능하다.

 

  - 변수 호이스팅

     : 자바스크립트에서 var 변수의 경우 Interpreter가 코드를 해석할 때 변수의 선언부를 먼저 다 읽고.

       그 후 코드를 위에서 아래로 읽는다. (양날의 검으로 작용할 수 있기에 안쓰는게 낫다.)

 

 

  - Scope(스코프)

    :  메모리에 올라간 변수가 GC(Garbage Collector)에 의해 지워지는 시점을 말함

        -> 함수범위 Scope : 변수가 선언된 함수가 종료되면 메모리에서 변수가 삭제

        -> 블록레벨 Scope : 변수가 선언된 블록{} 이 끝나면 메모리에서 변수가 삭제

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    
        function variableTest(){
        
            
            /* var 변수와 let 변수 모두 if문의 실행부에서 선언되었다. */
            if(true){
                var vScope = 'var는 함수범위 scope를 가진다.';
                let lScope = 'let는 블록범위 scope를 가진다.';
                
            }
            
            console.dir(vScope); /* 함수가 끝날 떄까지 살아 있음 */
        /*    console.dir(lScope);  if문 블록이 닫히는 순간 lScope는 죽어버리기 때문에 Error뜸 */
            
    }
        /* 함수 호출 */
         variableTest();
        
        
    

Colored by Color Scripter

cs

'FrontEnd > Javascript' 카테고리의 다른 글

[JS] Javascript의 함수(Function)  (0) 2021.01.21
[JS] Javascript의 배열(array)  (0) 2021.01.19
[JS] Javascript의 statement  (0) 2021.01.19
[JS] Javascript 의 연산자(operator)  (0) 2021.01.19
[JS] Javascript 타입(type)  (0) 2021.01.19

댓글