gpt4 book ai didi

AngularJs 常量值发生变化

转载 作者:行者123 更新时间:2023-12-02 23:16:05 26 4
gpt4 key购买 nike

我有一个名为“app”的模块,其中定义了一个常量“PI”,稍后在我的 Controller 中,当我尝试更改常量的值时,它会发生变化。

我无法理解 AngularJS 中 constant 的用途。

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;
});

最佳答案

您实际上并没有更改常量的值。您正在更改通过依赖项注入(inject)参数引入的词法绑定(bind)变量的值。

查看以下使用 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的恒定性质,我们只是改变了绑定(bind)pi

当您调用函数时,它会将新变量引入作用域,每个参数对应一个新变量。您无法控制这些变量的绑定(bind),这与可以使用 letvarconst 引入的常规变量不同。

如果您将常量注入(inject)另一个模块,您会看到该值没有更改。

如果你想保证变量在引入它的函数作用域内不会被反弹,可以用const重新引入它。

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;
});

Angular 应用程序中 const 的目的是保证无论何时何地注入(inject),注入(inject)的值都是相同的。

关于AngularJs 常量值发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35309143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com