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/