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')