SyntaxError: missing ; before statement
메시지
SyntaxError: missing ; before statement
오류 타입
무엇이 잘 못 되었나?
어딘가에 세미 콜론(;
)이 빠져 있습니다. JavaScript 구문은 반드시 세미 콜론으로 끝나야 합니다. 일부는 자동 세미콜론 삽입 (automatic semicolon insertion (ASI))의 영향을 받습니다. 그러나 이 경우에는 직접 세미 콜론을 써주어야 합니다. 그래야 JavaScript가 올바르게 해석 될 수 있기 때문입니다.
그러나, 가끔, 이 오류는 또 다른 오류의 결과로도 나타날 수도 있습니다. 문자열을 escape 문자로 적절히 처리해 주지 않았을 때, 또는 var
키워드를 잘 못 사용했을 때와 같은 경우 입니다. 또한 어딘가에 너무 많은 괄호 기호를 사용했을 것입니다. 이 오류가 발생했을 때에는 문법을 신중히 검토해야 합니다.
예제
Escape 처리되지 않은 문자열
이 오류는 문자열을 escape 처리 하지 않았을 때, JavaScript 엔진이 문자열 끝을 미리 예측하여 발생합니다. 예를 들자면 아래와 같습니다. :
js
var foo = 'Tom's bar';
// SyntaxError: missing ; before statement
문자열을 묶어줄 때 쌍 따옴표를 사용하거나, 역슬래시를 이용해서 홑따옴표를 사용 할 수 있습니다. :
js
var foo = "Tom's bar";
var foo = 'Tom\'s bar';
var와 함께 선언하는 것
이미 var
선언된 object나 array의 요소를 새로 선언 할 수 없습니다.
js
var obj = {};
var obj.foo = 'hi'; // SyntaxError missing ; before statement
var array = [];
var array[0] = 'there'; // SyntaxError missing ; before statement
대신에, var
키워드를 생략하고 정의합니다. :
js
var obj = {};
obj.foo = "hi";
var array = [];
array[0] = "there";