변수는 이 변수가 정의된 함수 안에서 보일 뿐 아니라 이 함수 않에 중첩된 함수 안에서도 보인다.
function test(){
var i = 0;
if (1=1){
var j=0;
for(var k=0; k<10;k++){
colsone.log(k);//0~9출력
}
console.log(k);//10출력
}
concole.log(g); //0 출력
}
자바스크립트에서 함수의 유효범위는 이 함수안에서 선언된 모든 변수가 함수전체에 걸쳐 유효하다는 의미이다.
이런 특징을 끌어올림이라 한다.
var scope = "global";
function f(){
console.log(scope); //"global"이 아니라 "undfined"를 출력
var scope = "local"; //변수를 여기서 초기화 하지만 전역적으로 정의된다.
console.log(scope); //"local"을 출력한다.
}
지역변수를 선언하는 var문이 아직 실행되지 않았기 때문에 여러분은 이 함수의 1행이 "global"을 출력할거라고 착각할 수 있다.
하지만, 함수 유효범위 규칙 때문에 실제로는 그렇지 않다. 지역 변수는 함수 전체에 걸쳐서 정의 된다. 즉, 같은 이름의 전역 변수는
함수 전체에서 이 지역 변수에 의해 감춰진다. 지역변수가 함수 전체에 걸쳐 정의되었다라도 var문이 실행되고 나서야 실제로
초기화 된다. 그리고 변수선언은 함수 맨 꼭때기로 끌어올려지고, 이시점에 변수 초기화가 이루어진다.
'웹 개발 > Javascript 등' 카테고리의 다른 글
변수 (선언되지 않은 변수 사용) (0) | 2015.03.18 |
---|