AngularJs常量值被更改

时间:2016-02-10 07:24:34

标签: angularjs constants

我有一个名为“app”的模块,我在其中定义了一个常量“PI”,稍后在我的控制器中,当我试图更改常量的值时,它会被更改。

我无法理解AngularJS中常量的目的。

var app = angular.module('app', []);
app.constant('PI', 3.14159265359);

app.controller('appCtrl', function(PI) {
    var radius = 4;
    PI=2;
    // calculate area of the circle
    console.log(PI);
    var area = PI * radius * radius; 
});

3 个答案:

答案 0 :(得分:3)

您实际上并未更改常量的值。您正在更改通过依赖注入参数引入的词法绑定变量的值。

使用Javascript const关键字查看以下示例。

const PI = 3.14;

function area(pi, radius) {
  pi = 2;
  console.log('pi', pi);
  console.log('PI', PI);
  return pi * Math.pow(radius, 2);
}

显然pi将被记录为2,但我们还没有违反PI的常量性质,我们只是更改了{{1}的绑定}。

调用函数时,它会在范围中引入新变量,每个参数对应一个变量。您无法控制这些变量的绑定 - 与常规变量不同,常规变量可以与piletvar一起引入。

如果您将常量注入另一个模块,您将看到该值未被更改。

如果你想保证变量不能在引入它的函数范围内反弹,你可以用const重新引入变量。

const

Angular应用程序中app.controller('appCtrl', function(PI) { var radius = 4; const pi = PI; pi = 2; // calculate area of the circle console.log(pi); var area = PI * radius * radius; }); 的目的是保证注入的值无论何时何地注入它都是相同的。

答案 1 :(得分:0)

虽然不改变constant的值是一个好习惯,但值可以改变。请参阅here

答案 2 :(得分:0)

更改常量运行时的值,因此它将在结果处返回新值。

实现是不要改变常量变量。