在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);
});
}
};
});
答案 0 :(得分:11)
此行为是设计使然。
Javascript中的分号是可选的。 (ASI)
解析器在return
行之后插入隐式分号,并假定{
开始代码块。 (例如在if
或for
之后)
该代码块中的第一行实际上不是有效代码,因此您会收到该错误。
这是因为return
是带有和不带操作数的有效语句。
同样,代码
return
4;
被解析为return; 4;
。