未捕获的语法错误:意外的令牌(即使函数有效

时间:2015-06-26 05:22:38

标签: javascript jquery html

我正在尝试制作一个Web应用程序。我在一个单独的.js文件中有一个任务控制器,我将其包含在主.html文件中:

<head>
  <script src = "tasks-controller.js"></script>
</head>

和文件tasks-controller.js:

tasksController = function() {
    var taskPage;
    var initialized = false;

    return
    {
        init: function(page) {
            if(!initialized)
            {
                 .... some manipulation with jQuery...    
                initialized = true;             
            }
        }
    }
} ();

回到我的主.html文件中,我在正文关闭元素后立即调用任务控制器:

<script>
$(document).ready(function()
{
  tasksController.init($('#taskPage'));
}
</script>

当我测试文件时,在Google Chrome工具中,我得到Uncaught SyntaxError:Unexpected token(在tasks-controller.js的第8行,这就是这一行:

init: function(page)

以及另一个错误,即“任务控制器”&#39;我在上面调用它时没有定义。对我做错的任何建议?谢谢!

2 个答案:

答案 0 :(得分:1)

ready方法是错误的位置。您错过了)的{​​{1}}。

请参阅以下代码中突出显示的代码和注释。

ready

代码中的其他问题是$(document).ready(function() { tasksController.init($('#taskPage')); }); // The ) you've missed // ^^^ 语句。如果您将return放到object的下一行,它将始终返回returnAutomatic semicolon insertion会导致代码在undefined之后加上分号。

所以,它会像return

使用以下代码:

return;

答案 1 :(得分:0)

由于隐含的分号,您的代码等于:

return;
{
    init: function(page) {
        if(!initialized)
        {
             .... some manipulation with jQuery...    
            initialized = true;             
        }
    }
}

返回没有返回任何内容,因此{}创建一个新块。现在您可以看到为什么会出现语法错误。

只需将第一行更改为return {(无新行),您就应该做得很好。

请参阅Strangest language feature