본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


JAVASCRIPT

javascript 공부 2 - 변수의 유효범위( var, let , const )

반응형

 

 

const  , let  변수의 유효범위

 

//변수의 유효범위


function scope1(){
    if(true){
        const a = 'hi';
        console.log(a)
    }
}

//변수는 블록레벨의 유효범위를 갖는다 
//아래의 코드들은 작동하지 않는다


//에러 발생
function scope2(){
    if(true){
        const a = 'hi';
    }
    console.log(a)
}

//undifined 출력
function scope3(){
    if(true){
        console.log(a)
    }
    const a = 'hi';
}

//undifined 출력
function scope4(){
    if(true){
        console.log(a)
        const a = 'hi';
    }
}

 

let , const 변수는 한 블록내에서만 유효하다  즉 블록레벨의 유효범위를 갖는다 .  scope 2 는 아래와 같은 에러가 발생한다 .

scope 3,4는 같은 경우에는 같은 블록내에 위치하지만  변수 a 를 사용하는 메서드가 위에 먼저 선언이 되어 있기 때문에 에러가 나지 않고  값이 할당되지 않았기 때문에 undifined 가 출력된다 . 

 

 

var의 유효범위

 

function scope2(){
    if(true){
        var a = 'hi';
    }
    console.log(a)
}

 

var 변수는 함수레벌의 유효범위를 같는다  때문에 위와 같은 코드가 정상적으로 작동된다 . 

변수  a 는 if 문 블럭안에 있지만 if 문 블락 밖의 메서드에서 사용이 가능하다 .

var 같은 경우에는 의도하지 않은 곳에서 해당 변수가 사용될 가능성이 있으며 , 메모리를 그 만큼 넓은 범위에서 메모리를 차지하고 있기 때문에 메모리 누수를 일으킬 수 있다 . 

 

 

 

 

 

반응형