Uncaught SyntaxError: missing ) after argument list

 

자바스크립트에서 발생한 오류로 onclick에서 String 파라미터를 넘겨야하는데 못넘겨서 발생한 오류이다.

주로 아래와 같은 케이스에서 발생한다. 

 

 

- Case 01 : 문자열을 연결하는 "+" 연산자가 없는 경우

console.log('PI: ' Math.PI);
// SyntaxError: missing ) after argument list
console.log('PI: ' + Math.PI);
// "PI: 3.141592653589793"

- 해결 방법01

+ 연산자 를 추가한다.

 

- Case 02 :  따옴표로 감싸주지 않은 경우

content += '<a herf="javascript:void(0);" onclick="adresMove('+ value.indv_lnm_adres + ',' + key + ');">';
// Uncaught SyntaxError: missing ) after argument list

- 해결 방법02

content += '<a herf="javascript:void(0);" onclick="adresMove(\''+ value.indv_lnm_adres + '\',\'' + key + '\');">';

따움표를 시작하는 부분과 끝나는 부분에서 \, 즉 역슬래시를 붙여주면 따움표로 인식하여 정상적으로 작동이 된다.

즉,  시작부분은 \'   끝나는 부분은 \'    똑같은 방법으로 처리해준다. 

 

- Case 03 :  JSON 데이터의 오류가 있는 경우

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

 

예 ) "AB'C"

위와 같은 경우,  function( 'AB&apos;C); 와 같이 되어야 하는데,  function( 'AB'C); 로 인식되어

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

- 해결 방법03

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

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;

 

혹은 Controller단에서 ''를 붙이지 않고 넣어주도록 수정해도 된다. 

 

 

 

 

 

 


Reference

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list
https://lookingfor.tistory.com/entry/Uncaught-SyntaxError-missing-after-argument-list

https://chobopark.tistory.com/199

 

+ Recent posts