달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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/


:
Posted by 클레잇