본문 바로가기
[개발] Programming/Javascript

자바스크립트 Uncaught SyntaxError: missing ) after argument list 오류 해결

by eatyourKimchi 2021. 12. 9.

Uncaught SyntaxError: 

missing ) after argument list

 

웹 프로그래밍을 하다 보면 흔히 발생하는 문법 오류가 있다.

그중 위와 같은 오류가 발생했다면, (경험상) 대부분 세 가지 오류에 해당된다.

 

 

 

01 괄호 오류

정말 말 그대로 괄호를 빼먹은 케이스다.

JSTL을 사용 한다면, '}' 또는 '{'를 실수로 빼먹을 수도 있고

'(' 또는 ')' 를 빼먹을 수도 있으니 브라우저의 콘솔로 확인해보자.

 

 

02 ' 또는 " 오류

실수로 ' 또는 "를 추가로 넣은 경우 발생한다.

예를 들어, 아래처럼 입력하면 오류가 나지 않는데,

var aa = "뿌잉 뿌잉";

var bb = "오빠 " + aa; 


var tmp = "오빠" aa; 또는 var tmp = "오빠 + aa;

와 같은 실수를 하는 사람들이 없진 않다.

 

특히 HTML 태그에 onclick 함수에 동적 파라미터를 넣을 때 실수를 한다.

 

 

03 데이터 오류

이번에 경험한 오류는 바로 JSON 데이터에서 발생했다.

데이터를 JS의 JSON.parse(); 에서 호출하는데, 스트링 안에 ' 가 포함되어 있었다.

 > 오류가 난 데이터 : "AB'C"

 

그러다 보니 function( 'AB'C' ); 와 같이 되어야 하는데,  function( 'AB'C' ); 로 인식되어

스크립트에서는 마지막에 ')' 괄호를 문자로 인식해 버렸다. 

 

이럴 때는 컨트롤러 단에서 특수 문자 치환이 필요하다.

for(int i=0; i<list.size(); i++) {
  String tmp = (String) list.get(i).get("text");
  list.get(i).put("text", tmp.replace("'", "&apos;"));
}

 

결국 '를 &apos; 로 치환하여 HTML에서 문자열로 인식하게 변경한 것이다.

아래는 HTML에서 특수 문자로 인식할 수 있어 치환이 필요한 대표적인 문자들이다.

 

^   &Hat;
'    &apos;
>   &gt;
<   &lt;
;    &semi;
&  &amp;
"   &quot;
#   &num;

 

 

끝~!ㅋ

 

댓글