Javascript中不变性的定义是什么?每种程序语言都是一样的吗?

Javascript中不变性的定义是什么?每种程序语言都是一样的吗?,javascript,immutability,Javascript,Immutability,我知道在JS中,原语值是不可变的,对象是可变的,但是,这到底意味着什么呢 例如: var foo = 1; 那么我们有 foo = 2; foo变异了吗 这适用于每种语言吗?还是每个人都按照自己的规则应用它?一个是在创建后状态无法更改的人。它适用于值,如果希望变量是不可变的,则必须将它们声明为常量 var str='hello world'; str[0]=“1”; //价值保持不变 console.log(str); 常数x=1; //err不能更改值 x=2; 控制台日志(x)是一种状

我知道在JS中,原语值是不可变的,对象是可变的,但是,这到底意味着什么呢

例如:

var foo = 1;
那么我们有

foo = 2;
foo
变异了吗

这适用于每种语言吗?还是每个人都按照自己的规则应用它?

一个是在创建后状态无法更改的人。它适用于值,如果希望变量是不可变的,则必须将它们声明为常量

var str='hello world';
str[0]=“1”;
//价值保持不变
console.log(str);
常数x=1;
//err不能更改值
x=2;
控制台日志(x)是一种状态在创建后无法更改的代码。它适用于值,如果希望变量是不可变的,则必须将它们声明为常量

var str='hello world';
str[0]=“1”;
//价值保持不变
console.log(str);
常数x=1;
//err不能更改值
x=2;

控制台日志(x)正如@Pointy所说,当你谈论不变性和易变性时,你谈论的是值而不是变量


在JavaScript中,字符串和数字是设计不变的。也许这些例子可以帮助你理解@Pointy所说的

,当你谈论不变性和易变性时,你谈论的是值而不是变量


在JavaScript中,字符串和数字是设计不变的。也许这些例子可以帮助您理解易变性的概念适用于值,而不是变量。听起来像是@Pointy True的复制品,但我们可以将不可变性的概念应用于范围并获取常量。不同的语言有不同的不可变类型。在C语言中,您可以修改字符串(它们实际上只是数组),除非它们声明为
const
。很少有语言允许您修改数字。@Jamo在某些语言(Erlang)中,变量也是不可变的:一旦在Erlang中为变量赋值,就不能为变量赋值。JavaScript变量不是这样的,除非它们是用
const
声明的。可变性的概念适用于值,而不是变量。听起来像是@Pointy True的副本,但我们可以将不变性的概念应用于范围并获取常量。不同的语言有不同的不可变类型。在C语言中,您可以修改字符串(它们实际上只是数组),除非它们声明为
const
。很少有语言允许您修改数字。@Jamo在某些语言(Erlang)中,变量也是不可变的:一旦在Erlang中为变量赋值,就不能为变量赋值。JavaScript变量不是这样的,除非它们是用
const
声明的。