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

mepcadol  于 12个月前  发布在  Angular
关注(0)|答案(2)|浏览(128)

我的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中的一个bug。

ibps3vxo

ibps3vxo1#

AngularJS不运行JavaScript文件-您的浏览器会这样做。它甚至不会解释它们-您的浏览器也会这样做。一个换行符产生这样的行为是极不可能的。
然而,Javascript确实有一个特性,它会让很多来自其他语言(如Java)的开发人员绊倒,这些语言会更严格地执行诸如JavaScript之类的东西。在JavaScript中,在许多情况下,子对象被认为是“可选的”-它们隐含在大多数行的末尾。问题是,这意味着代码格式是必不可少的,一个好的IDE也是如此-它将帮助您捕获这样的问题。
如果你将代码粘贴到Plnkr中,你会立即看到错误:http://plnkr.co/edit/QBqe8qqZQkxy52AKPdj9
比较其他两个文件(fixed.js和better.js),看看不同的格式。你有两个隐含的问题,其中之一是你的问题的根源。在JavaScript中,你不能这样做:

return
{

开始一个将由return语句返回的对象。Return本身就是一个语句,不返回任何东西是完全有效的。JavaScript解释器会在这里放置一个隐含的参数,并在函数的其余部分爆炸,因为它将不再有效。

htzpubme

htzpubme2#

我想跟进一下,我也复制了这种行为,在返回后的换行符确实会生成这个运行时错误!
我可以提供html文件和小的angular.js文件,在文件的开头包含以下行:
/**

相关问题