返回后的新行导致编译错误

时间:2014-07-17 07:53:17

标签: angularjs

我的AngularJS代码如下所示:

module.directive('myDir', ['$rootScope', function($rootScope)
{
  return{
            restrict: 'A',
            link: function(scope, el, attrs, controller) {
            }
        }
    }]);

编译没有问题。但是,如果我在return语句后面添加一个新行,则会发生异常。为什么:

module.directive('myDir', ['$rootScope', function($rootScope)
{
  return
  {
            restrict: 'A',
            link: function(scope, el, attrs, controller) {
            }
        }
    }]);

编辑:这似乎是AngularJS中的一个错误。

1 个答案:

答案 0 :(得分:3)

AngularJS不运行Javascript文件 - 您的浏览器会这样做。它甚至没有解释它们 - 你的浏览器也是如此。换行极不可能产生这样的行为。

然而,Javascript的特点是,许多来自Java等其他语言的开发人员更加严格地执行分号这样的事情...在Javascript中,分号在许多情况下被认为是“可选的” - 它们暗示着大多数线的结束。问题是,这意味着代码格式化是必不可少的,并且也是一个好的IDE - 它将帮助您捕获这样的问题。

如果您将代码粘贴到Plnkr中,您将立即看到错误: http://plnkr.co/edit/QBqe8qqZQkxy52AKPdj9

比较其他两个文件(fixed.js和better.js)以查看不同的格式。你有两个隐含的分号,其中一个是问题的根源。在Javascript中你不能这样做:

return
{

启动一个将由return语句返回的对象。返回是一个单独的声明,并且完全有效,不返回任何内容。 Javascript解释器会在这里放置一个隐含的分号,并且会破坏你的其余功能,因为它将不再有效。