伙计们。
我正在学习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’函数的内部访问。为什么不行?
我可以猜到,access提供了对$scope对象的访问,只是为了避免与$scope外部的一些对象搞混,而这些对象在逻辑上应该是“不可见的”。不过,目前我仍不明白这是如何运作的。
有什么想法吗?链接到一些澄清的东西阅读将是完美的。
发布于 2015-08-17 12:00:19
可能是幻觉。JavaScript闭包是为此而创建的,您将永远得不到上面发布的代码用于x的ReferenceError。这并不意味着x不能成为undefined。
https://stackoverflow.com/questions/32049577
复制相似问题