He visto controladores escritos de dos formas:

1)

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

2)

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

En el método 2, la función NO se nombra. ¿Alguien puede explicarme la diferencia aquí y cuándo se debe usar un método sobre el otro?

0
Blair Holmes 14 dic. 2016 a las 00:08
No debes usar ninguna de las dos porque no son seguras para la minificación. docs.angularjs.org/guide/di#dependency-annotation
 – 
Matthew Green
14 dic. 2016 a las 00:17

1 respuesta

La mejor respuesta

Desde el punto de vista de AngularJS, no hay una diferencia real entre los dos, especialmente cuando alinea la declaración del controlador (o servicios, o filtros, etc.) como en su ejemplo.

La única diferencia sería si quisiera definir el controlador a continuación registrándolo en un módulo, así:

myModule.controller('myController', myController);

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

… Ya que esta construcción solo es posible debido a la elevación del cuerpo de la función que ocurre en el caso de la función nombrada.

Si desea obtener más información sobre las funciones nombradas y anónimas, hay una buena explicación aquí: var functionName = function () {} vs function functionName () {}

Editar:

Vale la pena mencionar que parece haber una preferencia por usar funciones con nombre para aumentar la legibilidad del código, consulte la guía de estilo de AngularJS sobre esto: https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#style-y024 - también prefiero definir cosas usando el "método de elevación" como puede ver en todos los ejemplos. No es una única forma correcta , pero es una forma ;) La consistencia es la clave.

1
Community 23 may. 2017 a las 14:45