2013-04-12 111 views
0

我收到以下错误:未捕获的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

你有一个功能在声明,而不是一个函数表达式。函数声明必须有名称。

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

谢谢我正在使用require.js来加载它,并且看到了其他使用匿名函数的例子,比如......回到绘图板,我想。 –

+0

一般来说,当使用require JS时,文件将包含一个调用'define'方法的函数表达式作为参数传递。你不会只有坐在文件中的功能。 – Quentin

+0

有趣的教程,我遵循必须省略它,但它确实解决了这个问题。谢谢x 2 –

0

您不能声明匿名函数而不调用它。

+0

你根本不能“声明”一个匿名函数。这是一个语法错误,即使它立即被调用。它必须被解析为一个表达式,而不是一个声明。 –

0

当一个语法检查程序没有提供有用的错误消息时,请尝试另一个语法检查程序。

我通常是Chrome开发人员工具的粉丝,但在这种情况下,Chrome并未提供非常好的错误消息。所以,我想在粘贴代码到Firefox,它是更有帮助:

SyntaxError: function statement requires a name 
    function() { 

我也得到了同样的错误消息通过粘贴代码为Komodo具有实时语法检查,而你编辑。 (这并不奇怪,因为科莫多是基于Firefox的。)

当人们没有帮助时,可以尝试不同的工具。

相关问题