角度控制器签名中的命名函数与非命名函数之间的差异

时间:2016-12-13 21:08:40

标签: javascript angularjs controller

我看过用两种方式写的控制器:

1)

myModule.controller('myController', function($scope) {
...
});

2)

        using (var conn = new SqlConnection("YOUR CONNECTION STRING"))
        {
            using (var command = new SqlCommand("YOUR PROCEDURE NAME", conn))
            {
                command.CommandType = CommandType.StoredProcedure;
                conn.Open();
                command.ExecuteNonQuery();
            }
        }

在方法2中,该函数未命名。有人可以在这里向我解释一下这个区别,以及何时应该使用另一种方法?

1 个答案:

答案 0 :(得分:1)

从AngularJS的角度来看,两者之间没有真正的区别,特别是当您在示例中内联控制器(或服务'或过滤器'等)声明时。

如果您想在下面将控制器注册到模块中,那么唯一的区别就是:

myModule.controller('myController', myController);

function myController($scope) {
  ...
});

...因为只有在命名函数的情况下函数体的提升才能实现这种结构。

如果您想了解有关命名与匿名函数的更多信息,请在此处提供一个很好的解释:var functionName = function() {} vs function functionName() {}

编辑:

值得一提的是,似乎更倾向于使用命名函数来提高代码的可读性,请参阅AngularJS样式指南:https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#style-y024 - 他们也更喜欢使用“提升方法”来定义东西,因为你可以参见所有例子。它不是唯一正确的方式,但它是一种方式;)一致性是关键。