티스토리 뷰

발생일: 2014.11.27

키워드: IE8, window, property, 프로퍼티

문제:
아래처럼 window 객체에 직접 할당되어 있는 프로퍼티를 출력하려고 한다.

  for (var key in window) {
    console.log(key);
  }


예를 들어, 아래처럼 전역변수를 설정해뒀다면 위 결과에 포함되어 나올 것이다.

  var globalVar = ‘foo’;


헌데, IE8에서 window 속성을 나열해보면, 위 결과가 포함되어 있지 않다.
왜일까?


해결책:

IE8에서는 window의 속성으로 직접 정의하지 않은 경우, 나열하는 결과에 포함되지 않는다.
(아마도 enumarable이 false로 설정되는 모양이다)



아래 코드를 보면 쉽게 이해할 수 있다.

  var foo = ‘foo’; // 전역변수 정의. 암묵적으로 window의 속성이 된다.
  window.bar = ‘bar’; // window의 속성으로 직접 정의

  for (var key in window) {
    console.log(key); //—> 이 결과에 `bar`는 포함되지만, `foo`는 포함되어 있지 않다.
  }


구버전 IE에서는 정말 생각치도 못한 이슈들이 발생한다. ㅎㅎ



반응형
댓글
공지사항