5

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

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

我正在从这里测试一些脚本:这里

它给了我一个语法错误。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);
            });
        }
    };
});
4

1 回答 1

11

此行为是设计使然。

Javascript 中的分号是可选的。( ASI )
解析器在该行之后插入一个隐式分号return,并假定它{开始一个代码块。(比如在ifor之后for

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

发生这种情况是因为return无论有无操作数都是有效的语句。

同样,代码

return
4;

被解析为return; 4;.

于 2013-07-07T12:42:10.617 回答