人
我正在学习AngularJS,我想知道为什么控制器内部的函数不能作为clojure工作。这是关闭如何工作的典型例子
var inner;
var outer = function(x) {
inner = function() {
console.log(x);
}
}
outer(3);
inner();
所以,我希望这段代码的行为类似
angular.module('MyModule')
.value('x', 3)
.controller('MyCtrl', function($scope, x) {
$scope.showMeX = function() {
alert(x);
}
}
});
然而,注入变量' x'无法从“showMeX”内部访问。功能。为什么不?
我可以猜测Angular提供了对$ scope对象的访问,只是为了避免弄乱$ scope外部的某些对象,并且该逻辑的这些对象应该是“不可见的”。不过,目前我还不明白这是如何运作的。
有什么想法?链接到一些澄清的东西,阅读将是完美的。
答案 0 :(得分:0)
这可能是一种错觉。为此制作了JavaScript闭包,使用您在上面发布的代码,ReferenceError
永远不会获得x
。这并不意味着x
不能undefined
。