AngularJS: Константы против ценностей
Насколько я понимаю документацию, единственная конкретная разница между константой и значением заключается в том, что константа может использоваться во время фазы конфигурации приложений, тогда как значение доступно только во время фазы выполнения.
Мне любопытно, почему в этом случае нужны ценности? Разве они не просто ограниченные константы?
Ответы
Ответ 1
Константа может быть введена где угодно.
Константа не может быть перехвачена декоратором, , что означает, что значение константы никогда не должно меняться.
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;
});
Значение отличается от константы тем, что значение не может быть введено в конфигурации, , но оно может быть перехвачено декораторами.
var app = angular.module('app', []);
app.value('greeting', 'Hello');
app.config(function ($provide) {
$provide.decorator('greeting', function ($delegate) {
return $delegate + ' World!';
});
});
Ответ 2
Разница между значением и константой заключается в том, что значение, указанное с использованием константы, доступно на этапе конфигурации.
Хорошо то же самое для значения и константа. константа доступна на фазе конфигурации, а значение отсутствует.
Другое отличие состоит в том, что название подразумевает, что вы не можете изменить значение константы. Первое значение, которое вы назначили, - это значение, которое оно хранит, если вы попытаетесь присвоить ему другое значение позже, оно будет проигнорировано.
Вот пример:
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
Ответ 3
Правда, однако, имейте в виду, если вы используете объект как константу, его значение можно переопределить в любое время и в любом месте. Например
const version = '10.0'
не может быть изменен, если вы посмотрите на консоль, он даже выдает ошибку при изменении ее значения, но
const config = {
'version': '8.6'
}
ведет себя как простое значение, вы можете изменить значения объекта в любое время, например:
config.version = 5
tada, теперь ваша версия 5
.
То же самое относится к app.const('constant', 'its me')