javascript - 奇怪的javascript语法错误

标签 javascript angularjs

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

应该将此作为错误报告归档吗?

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

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

最佳答案

此行为是设计使然。

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

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

发生这种情况是因为 return 是带操作数和不带操作数的有效语句。

同理,代码

return
4;

被解析为返回; 4;

关于javascript - 奇怪的javascript语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17512212/

相关文章:

javascript - 使用动态键创建对象

javascript - 通过 jquery css bottom 或 top 改变一次

javascript - 如何在 Angular 指令的链接函数中插入 html?

AngularJS 如何进行单元测试以确保 ng-click 等指令指向有效代码

javascript - AngularJS 中类似 jQuery 的动画支持吗?

javascript - 如何在 Observable 方法中顺序调用异步函数?

javascript - 我如何在 gridster 中获取单个 widget(li) JSON?

javascript - 使用纯 JavaScript 从文本文件中读取数据

javascript - 用于在对象数组中搜索的 angularjs 自定义过滤器

javascript - 简单的 {{ }} 在 angularJS 项目中不起作用