Working code sample.Comportamento angolare imprevisto. la funzione self-executing chiama la funzione portata
markup Trivial:
<!DOCTYPE html>
<html ng-app="APP">
<head></head>
<body ng-controller="myController">
<script src="angular.min.js"></script>
<script src="controller.js"></script>
</body>
</html>
codice di Trivial di esempio:
angular.module('APP', []).controller('myController', function($scope) {
$scope.test = function() {
console.log('Weird behaviour!')
}
(function() {}()); //if you comment self-executing function console will be empty
});
E davvero strano comportamento ambito. Puoi spiegare perché questo succede?
Sono sicuro che lo sai questo stile di codice specifico per l'avascript ... ecco un esempio: jsfiddle.net/prfy9eso. È interessante notare che l'interpretazione per quell'esempio funziona in un modo diverso (le righe vuote modificano il comportamento del codice nel secondo esempio, ma non cambiano il comportamento nell'esempio angolare). – Spirit
'return' [è un'eccezione nota] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/return#Automatic_Semicolon_Insertion). Si noti la nota su "codice irraggiungibile dopo dichiarazione di reso", riguarda solo Firefox, ma l'utilizzo di linter configurato correttamente può impedire entrambe le situazioni. – estus
Anche 'throw',' continue', 'break'. [specifica] (http://ecma-international.org/ecma-262/5.1/#sec-7.9) –