AngularJS:常量与值

据我了解的文件,常数和价值之间唯一的具体区别是,常量可以在应用程序configuration阶段使用,而价值只在运行阶段可用。

我很好奇为什么在这种情况下需要价值? 难道他们真的只是有限的常量吗?

常数可以在任何地方注入

一个常量不能被装饰器拦截, 这意味着一个常量的值不应该被改变

var app = angular.module('app', []); app.constant('PI', 3.14159265359); app.config(function(PI){ var radius = 4; //PI can be injected here in the config block var perimeter = 2 * PI * radius; }); app.controller('appCtrl', function(PI) { var radius = 4; // calculate area of the circle var area = PI * radius * radius; }); 

值不同于常量,值不能被注入到configuration中但是可以被装饰器拦截

 var app = angular.module('app', []); app.value('greeting', 'Hello'); app.config(function ($provide) { $provide.decorator('greeting', function ($delegate) { return $delegate + ' World!'; }); }); 

常量之间的差异是在configuration阶段使用常量指定的值是可用的。

那么价值常量是一样的。 常数从configuration阶段可用, 不是。

另一个区别是顾名思义你不能改变一个常量的值。 你赋值的第一个值是它所保存的值,如果你稍后尝试给它赋一个不同的值,它将被忽略。

这是一个例子:

 mod.value("myValue", "First Assignment"); mod.value("myValue", "Second Assignment"); mod.constant("myConstant", "First Assignment"); mod.constant("myConstant", "Second Assignment"); mod.controller("MyController", function(myValue, myConstant) { console.log("myValue: " + myValue); console.log("myConstant: " + myConstant); }); 

控制台输出:

 myValue: Second Assignment myConstant: First Assignment 

不过,请记住,如果将对象用作常量,则可以随时随地覆盖其值。 例如

 const version = '10.0' 

不能改变,如果你看一下控制台,它甚至在改变它的值时会抛出一个错误,但是

 const config = { 'version': '8.6' } 

performance得像一个简单的值,您可以随时更改对象值,如下所示:

 config.version = 5 

田田,现在你的版本是5 。 同样适用于app.const('constant', 'its me')