티스토리 뷰

728x90
반응형

Uncaught SyntaxError: Function statements require a function name

위 오류는 오류 내용 그대로 함수 정의 코드에서 함수의 이름이 없어서 생겨나는 오류입니다.

 

만약 함수가 정의되어 있다면, 어떻게 정의되어 있는지, 혹시 이름이 없는 지, 아니면 오타가 난 건 아닌지

한번 확인해봐야 합니다.

 

일반적으로 아래와 같은 코드를 입력했을 때 오류가 발생합니다.

function () {
  return "Domdom's World";
}
// Uncaught SyntaxError: Function statements require a function name

그 이유는 함수에 이름이 없기 때문이죠.

 

혹시 익명 함수(anonymous function)를 사용하려고 했다면 아래와 같이 작성해야 했습니다.

var domdom = function () {
  return "Domdom's World";
};

 

아니면 만약에 정의되자마자 실행되는 함수를 정의하려고 하였다면,

아래와 같이 작성했어야 합니다.

(function () {
  return "Domdom's World";
})();

그럼 다음과 같이 정상적으로 바로 실행되었을 겁니다.

 

거의 드문 경우겠지만,

혹시 아래와 같이 함수 안에 label을 정의해서 함수를 사용하셨을 때 오류가 난 거라면,

동일한 해결법으로 함수에 이름을 붙여주면 됩니다.

function Domdom() {
  domdom: function () {
    return "domdomi";
  }
}
// Uncaught SyntaxError: function statement requires a name

function Domdom() {
  domdom: function dom() {
    return "domdomi";
  }
}
// OK

 

사실 오타가 제일 문제입니다.

promise.then(
  function() {
    console.log("hello domdomi");
  });
  function() {
    console.log("bye domdomi");
}
// Uncaught SyntaxError: function statement requires a name

이런 경우도 많을 것 같은데요. 위 코드를 보시면 }(세미콜론)을 제일 마지막에 붙였어야 하는데 중간에 붙여져서 생긴 오류인데, 세미콜론을 잘못닫아서 생긴 오류라고 나오지 않고, 오히려 함수에 이름이 없어서 생긴 오류가 발생했습니다.

이런 경우가 없는 지 잘 살펴봐야합니다..

 

위 코드를 정상적인 코드로 고친다면 아래와 같이 될 겁니다.

promise.then(
  function() {
    console.log("hello domdomi");
  },
  function() {
    console.log("bye domdomi");
  }
};

- 끝 -

728x90
반응형
댓글