它通常说在函数式编程中数据结构是不可变的。我知道不可变数据结构是一种无法改变的数据结构。
但是,是否也意味着变量引用也无法更改?
例如,
var arr = [1,2,3]
arr = [4,5,6]
在这段代码中,我没有改变数组[1,2,3],而是创建了一个新数组。不过,我改变了变量'arr'的引用。此代码是否遵循不变性数据结构的原则?
答案 0 :(得分:1)
您不应该重新分配参考文献。理想情况下,您可以创建一个新变量,这样您就可以看到您所做的任何更改的“之前和之后”。
但是,即使指向它的引用发生了变化,底层结构仍然可以是不可变的。如果某人正在查看旧版本的结构,重新分配引用将不会对数据的有效性造成任何损害,因为旧版本仍然存在,未更改。
答案 1 :(得分:1)
是否也意味着变量引用也无法更改?
是。然后它们被称为常量。你最好写
const arr1 = [1,2,3]
const arr2 = [4,5,6]
此方法允许您将范围环境视为不可变数据结构,这应该是默认值。它使您的代码的推理变得更加容易。