我正在一个AngularJS项目中,其中有一个.constant()提供程序来声明整个项目中使用的一些基本信息。例如,cookie名称的定义。例如:

.constant('appConst', {
    cookie: 'CookieName',
    ...
});


但是通过声明const可以完成同一件事:

const appConst = {
    cookie: 'CookieName',
    ...
}


那么,使用.constant提供程序而不只是声明const的优势是什么?我知道原因之一是因为我们不期望价值会改变。但这不是const的目标吗?

最佳答案

新的const关键字只是使它成为可能,所以您不能重新分配该变量,也不会使您最初分配给它的任何对象不变。因此,在您的示例中:

const appConst = {
    cookie: 'CookieName',
    ...
}


您仍然可以更改cookie的值。您只是不允许这样做:

appConst = { // My new object };


角度.constant()中的值也可以更改,因此在单词“ constant”的常用用法中它们不是恒定的。至少不是这样使用时:

.constant('appConst', {
    cookie: 'CookieName',
    ...
});


因此,例如,如果您这样做并更改控制器中的值

app.controller('myController', function(appConst){
    appConst.cookie = 'NewCookieName';
})


构造此控制器后,更改将反映在您注入appConst的任何位置。

但是,在这种情况下,您不能“重新分配” appConst,该操作将被忽略,因此在这种意义上是恒定的。

关于javascript - 如果可以声明JS const,为什么还要使用AngularJs .constant()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43022566/

10-10 11:23