JSON 리터럴의 마지막 컴마를 주의하자.

발생일: 2011.06.14

문제:
얼마 전 수정 작업 이후, 스크립트에서 구현한 모듈의 네임스페이스를 찾지 못하는 오류가 발생했다.

IE7 이하에서 아래와 같은 오류가 발생했다.

식별자나 문자열 또는 숫자가 필요합니다.
'abc.namespace'은(는) null 이거나 개체가 아닙니다.
 
코드가 압축되어 있는 데다 IE 하위 버전에서만 발생하다보니 디버깅이 녹녹치 않더라.

알고 보니, JSON 리터럴에서 마지막 컴마를 삭제하지 않은 것이 문제였다.
아아... 원인에 대해서는 이미 알고 있었지만, 이렇게 나타나니 좀 당황스러웠다.


해결책:
최근 브라우저에서는 JSON 형태의 객체 리터럴에서 마지막 컴마를 올바르게 종료하지 않아도 오류 없이 정상적으로 표시된다. 하지만 IE7 이하에서는 아래와 같은 오류를 발생한다.

var json = { a: "apple", b: "banana", }; // 컴마를 종료하지 않을 경우
// '식별자나 문자열 또는 숫자가 필요합니다.'라는 오류가 발생된다.
// 오류 이후의 스크립트는 실행되지 않는다.


오류 발생 이후의 스크립트는 실행되지 않고 구형 브라우저이기 때문에 디버깅이 쉽지 않다.

만약 라이브러리를 사용하기 이전에 JSON 리터럴 구문에 오류가 있었다면,
심지어는 'jquery가 정의되어 있지 않습니다.'와 같은 메세지를 만날 수도 있겠다.

별 것 아닌 오류지만, 쉽게 실수할 수 있을 것 같아 메모해둔다.

* 작은 팁)
   IE8 이상에서는 '개발자 도구'의 브라우저 모드를 IE7로 셋팅하고 디버깅 하면 마음의 평화가 조금 더 빨리 온다.





카테고리

분류 전체보기 (711)
About me. (6)
Daylogs (676)
영어공부 (0)
My works - 추억 (29)
비공개 (0)