본문 바로가기

javascript

[javascript] 유효범위 (scope)

자바스크립트의 유효범위는 기존 블록 유효범위와 다르다


유효 범위가 블록 안에 존재 하지 않고 함수 안에 존재 한다.


무슨말인지 잘 이해가 안갈수도 있는데 예를 보면서 설명해 보겠다.


var test='111' //전역변수 test


//if블록 안

if(true){

var test='222'

}

console.log(test) // 222가 출력


보통 다른 언어를 생각한다면 if문안이니까 지역변수로 222가 저장되고


전역변수는 변화가 없다고 생각하지만 test변수값에는 222가 설정되었다.


다음 코드를 보자


var test='111'; //전역변수test


function test(){

var test='222';

}

test();

console.log(test); //111이 출력


위와 같이 함수안에 설정된 변수는 지역변수로 설정되고 출력값은 처음 설정한 111로 동일하다.


정리해 보면 자바스크립트는 유효범위가 블록(if, while, for ....)안에 존재하지 않고 함수안에 존재한다.