我正在开发一个AngularJS项目,其中有一个.constant()
提供程序,用于声明整个项目中使用的一些基本信息。例如,cookie名称的定义。例:
.constant('appConst', {
cookie: 'CookieName',
...
});
但同样的事情可以通过声明const
,例如:
const appConst = {
cookie: 'CookieName',
...
}
那么,使用.constant
提供商而不仅仅是声明const
的优势是什么?我知道其中一个原因是因为我们不期望价值会发生变化。但这不是const
的目标吗?
答案 0 :(得分:1)
1- const
是ES6中的新功能,因此您可能需要转发代码以支持旧浏览器。
2- const
是块范围的,所以在一个场景中,您在A.js
中定义一个常量,除非您使用的是B.js
,否则无法在inject
使用它模块捆绑器,所以我们回到主题 1 - 。
AngularJS具有此原生的主要目的是使您能够使用其依赖注入系统在控制器,服务和指令之间共享它。
答案 1 :(得分:1)
新的const
关键字只会使您无法重新分配变量,它不会使您最初分配给它的任何对象不可变。所以在你的例子中:
const appConst = {
cookie: 'CookieName',
...
}
您仍然可以更改cookie
的值。你不会被允许做这样的事情:
appConst = { // My new object };
角度.constant()
中的值仍然可以更改,因此它们在常量使用单词"常量"时不会保持不变。至少在您使用它时不会这样:
.constant('appConst', {
cookie: 'CookieName',
...
});
因此,例如,如果您这样做并更改控制器中的值
app.controller('myController', function(appConst){
appConst.cookie = 'NewCookieName';
})
在构建此控制器后,您将在注入appConst
的任何位置反映更改。
你不能重新分配"但是在这种情况下appConst
,这个动作只会被忽略,所以在这个意义上它是不变的。