var vscope = 'global';
function fscope(){
alert(vscope);
}
fscope();
//global
함수 밖에서 변수를 선언하면 그 변수는 전역변수가 된다. 전역변수는 에플리케이션 전역에서 접근이 가능한 변수다. 다시 말해서 어떤 함수 안에서도 그 변수에 접근 할 수 있다.
var vscope = 'global'; // 전역변수 (자바 전역에서 접근)
function fscope(){
var vscope = 'local'; // 지역변수 (함수 중괄로안 접근)
alert('함수안 '+vscope);
}
fscope();
alert('함수밖 '+vscope);
/*
함수안 local
함수밖 global
*/
var vscope = 'global';
function fscope(){
vscope = 'local';
}
fscope();
alert('함수밖'+vscope);
/* local
3scope의 지역변수를 선언할 때 var를 사용하지 않았기 때문이다.
var를 사용하지 않은 지역변수는 전역변수가 된다. */
지역변수의 유효범위는 함수 안이고, 전역변수의 유효범위는 에플리케이션 전역인데, 같은 이름의 지역변수와 전역변수가 동시에 정의되어 있다면 지역변수가 우선한다는 것을 알 수 있다.
변수를 선언할 때는 꼭 var을 붙이는 것을 습관화해야 한다. 전역변수를 사용해야 하는 경우라면 그것을 사용하는 이유를 명확히 알고 있을 때 사용하도록 하자.
유효범위의 효용
지역변수의 사용
function a (){
var i = 0;
}
for(var i = 0; i < 5; i++){
a();
document.write(i);
}
// 01234
전역변수의 사용
function a (){
i = 0;
}
for(i = 0; i < 5; i++){
a();
document.write(i);
}
// 무한반복
전역변수의 사용
불가피하게 전역변수를 사용해야 하는 경우는 하나의 객체를 전역변수로 만들고 객체의 속성으로 변수를 관리하는 방법을 사용한다.