Javascript & HTML & CSS/pure javascript
javascript의 유효 범위
클레잇
2016. 12. 14. 20:31
javascript의 유효 범위는 타 언어와는 조금 다르다.
유효범위가 블럭 단위가 아니라 함수이다.
var 키워드를 생략할 수 있음
-> 단, 이렇게 하면 전역변수화 됨
함수 실행 시 유효범위는 실행환경이 아니고 정의 환경을 따름
즉, 아래와 같은 코드는 문제가 생긴다는 뜻.
function f1(){
var a = 10;
f2();
}
function f2(){
return a;
}
f1();
실행 결과 : a is not defined
실행 타이밍에는 분명 순서를 보면 f2가 a를 리턴하고, f1은 a를 이미 선언했으므로 f2가 리턴하는 a를 인식할 수 있어야 하는데 하지 못하고 있다.
이는 함수를 정의할 때 f1의 a와 f2의 a가 서로 다른 변수로 인식되기 때문이다.
참고 : http://www.nextree.co.kr/p7363/