2013-04-12 7 views
0

Я получаю следующее сообщение об ошибке:Uncaught SyntaxError: Неожиданный токен (

Uncaught SyntaxError: Unexpected token (/timeline/scripts/collections/events.js?bust=1365755363650:1 

Вот /timeline/scripts/collections/events.js:

function() { 
    return Backbone.Collection.extend({ 
     model: Event 

    , parse: function(data) { 
      var parsed = []; 
      $(data).find('Event').each(function(index) { 
       parsed.push({ 
        title: $(this).find('title').text() 
       , date: $(this).find('date').text() 
       , content: $(this).find('content').text() 
       }); 
      }); 
      return parsed; 
     } 

    , fetch: function(options) { 
      options = options || {}; 
      options.dataType = "xml"; 
      Backbone.Collection.prototype.fetch.call(this, options); 
     } 
    }); 
}; 

По какой-то причине он сдавленным на function() {, но я не могу понять, почему. Это весь документ. Может ли кто-нибудь объяснить, что с этим не так?

ответ

1

У вас есть functi on Объявление, а не выражение функции. Объявления функций должны иметь имена.

function foo() { 
    return Backbone.Collection.extend({ 
+0

Спасибо, что я использую require.js для загрузки этого и видел другие примеры людей, использующих анонимные функции, такие как ... вернуться к чертежной доске, я думаю. –

+0

Вообще говоря, при использовании запроса JS файл будет состоять из вызова метода 'define' с выражением функции, переданным в качестве аргумента. У вас не будет функции, просто сидящей в файле. – Quentin

+0

Интересный учебник, за которым я последовал, должен пропустить его, но он действительно решает проблему. Спасибо x 2 –

0

Вы не можете объявить анонимную функцию, не вызывая ее.

+0

Вы не можете «объявить» анонимную функцию вообще. Это синтаксическая ошибка, даже если она немедленно вызвана. Он должен анализироваться как выражение, а не декларация. –

0

Если одна проверка синтаксиса не дает полезного сообщения об ошибке, попробуйте другой.

Я обычно являюсь поклонником инструментов разработчика Chrome, но в этом случае Chrome не дает очень хорошего сообщения об ошибке. Так что я попытался вставить свой код в Firefox, и это было гораздо полезнее:

SyntaxError: function statement requires a name 
    function() { 

Я также получил ту же сообщение об ошибке, вставив код в Komodo который имеет живую проверку во время редактирования синтаксиса. (Не удивительно, что сообщение такое же, поскольку Komodo основано на Firefox.)

Платит попробовать разные инструменты, если вы не помогаете.

Смежные вопросы