티스토리 뷰
발생일: 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에서는 정말 생각치도 못한 이슈들이 발생한다. ㅎㅎ
반응형
댓글
공지사항