我的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中的一个错误。
答案 0 :(得分:3)
AngularJS不运行Javascript文件 - 您的浏览器会这样做。它甚至没有解释它们 - 你的浏览器也是如此。换行极不可能产生这样的行为。
然而,Javascript的特点是,许多来自Java等其他语言的开发人员更加严格地执行分号这样的事情...在Javascript中,分号在许多情况下被认为是“可选的” - 它们暗示着大多数线的结束。问题是,这意味着代码格式化是必不可少的,并且也是一个好的IDE - 它将帮助您捕获这样的问题。如果您将代码粘贴到Plnkr中,您将立即看到错误: http://plnkr.co/edit/QBqe8qqZQkxy52AKPdj9
比较其他两个文件(fixed.js和better.js)以查看不同的格式。你有两个隐含的分号,其中一个是问题的根源。在Javascript中你不能这样做:
return
{
启动一个将由return语句返回的对象。返回是一个单独的声明,并且完全有效,不返回任何内容。 Javascript解释器会在这里放置一个隐含的分号,并且会破坏你的其余功能,因为它将不再有效。