gpt4 book ai didi

javascript - Angular Controller 内部闭合

转载 作者:行者123 更新时间:2023-11-28 07:02:05 25 4
gpt4 key购买 nike

各位。

我正在学习 AngularJS,我想知道为什么 Controller 内的函数不能像 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);
}
}
});

但是,无法从“showMeX”函数内部访问注入(inject)的变量“x”。为什么不?

我猜测 Angular 提供对 $scope 对象的访问只是为了避免弄乱 $scope 外部的某些对象,并且按照该逻辑,此类对象应该是“不可见的”。不过,目前我不明白这是如何工作的。

有什么想法吗?链接到一些可供阅读的澄清内容将是完美的。

最佳答案

这可能是幻觉。 JavaScript 闭包就是为此而设计的,使用上面发布的代码,您将永远不会得到 xReferenceError 。这并不意味着 x 不能未定义

关于javascript - Angular Controller 内部闭合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com