gpt4 book ai didi

javascript - "Controllers polluting the Global Namespace"在Angular中是什么意思

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:00 26 4
gpt4 key购买 nike

我是 Angular.js 的新手,我读到 Controller 不应该污染全局命名空间。

这到底是什么意思

以及为什么 angular.module('SomeApp',[]).controller('SomeController', function($scope) {})

是添加 Controller 的最佳方式吗?

最佳答案

编辑:污染全局命名空间并不是 Angular 特有的,而是 Javascript 特有的(实际上是任何动态类型语言,其中变量几乎可以在任何范围内出现或重新声明)。

污染全局命名空间将使不可用 - 实际上:将覆盖 - 模块中的某些名称。

假设我在“a.js”中有一个模块 A,我在其中声明:

mymodule = angular.module('A');

function Foo($s, $http){ ... };
foo = mymodule.controller('foo', ['$scope', Foo]);

还假设我事先包含了一个名为“utils.js”的脚本:

foo = 3;
a.js 中的

foo 会覆盖我的 utils 脚本中的 foo。这会污染全局命名空间,这就是为什么这是一个坏主意(也许我实际上需要 foo var)。

想要拥有这样的代码而不是链接调用?使用闭包:

/* a.js */
(function(){
var mymodule = angular.module('A');

function Foo($s, $http){ ... };
var foo = mymodule.controller('foo', ['$scope', Foo]);
})();

因此,您不会污染全局命名空间,因为每个声明都在匿名函数调用中。

关于javascript - "Controllers polluting the Global Namespace"在Angular中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25628819/

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