奇怪的javascript语法错误

时间:2013-07-07 12:39:33

标签: javascript angularjs

在Firefox中,我收到了一个奇怪的语法错误,因为这不是一件容易的事,而且我想在这里发布一个有趣的语法错误,因为我不知道它正在发生。

应该将其作为错误报告提交吗?

我正在测试一些脚本:here

它给了我一个语法错误。 SyntaxError: invalid label at line 5

app.directive("alertable", function()
{
    return 
    {
        restrict : "A",
        link: function(scope, element, attrs) 
        {
            element.bind("click", function() 
            {
                alert(attrs.message);
            });
        }
    };
});

这一个,不要:

app.directive("alertable", function()
{
    return { // fix???
        restrict : "A",
        link: function(scope, element, attrs) 
        {
            element.bind("click", function() 
            {
                alert(attrs.message);
            });
        }
    };
});

1 个答案:

答案 0 :(得分:11)

此行为是设计使然。

Javascript中的分号是可选的。 (ASI
解析器在return行之后插入隐式分号,并假定{开始代码块。 (例如在iffor之后)

该代码块中的第一行实际上不是有效代码,因此您会收到该错误。

这是因为return是带有和不带操作数的有效语句。

同样,代码

return
4;

被解析为return; 4;