Javascript 未捕获的语法错误:意外标记(

Javascript 未捕获的语法错误:意外标记(,javascript,syntax-error,Javascript,Syntax Error,我收到以下错误: 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: fun

我收到以下错误:

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 foo () {
    return Backbone.Collection.extend({

如果不调用匿名函数,则无法声明它。

如果一个语法检查器没有给出有用的错误消息,请尝试另一个

我通常是Chrome开发者工具的粉丝,但在这种情况下,Chrome不会给出很好的错误消息。因此我尝试将您的代码粘贴到Firefox中,这非常有用:

SyntaxError: function statement requires a name
    function () {
我还收到了同样的错误消息,在编辑时将代码粘贴到其中进行实时语法检查(这并不奇怪,因为Komodo是基于Firefox的)


在没有帮助的情况下尝试不同的工具是值得的。

你不能“声明”一个匿名函数。这是一个语法错误,即使它被立即调用。它必须被解析为一个表达式,而不是一个声明。感谢我使用require.js加载此函数,并且已经看到其他人使用匿名函数的例子,比如…回到绘图板上,我想。一般来说,当使用require js时,文件我们将调用
define
方法,并将函数表达式作为参数传递。你不会让函数仅仅放在文件中。有趣的是,我所遵循的教程中一定省略了它,但它确实解决了这个问题。谢谢x 2