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