Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
永久更改JavaScript字符串的正确方法_Javascript_Immutability - Fatal编程技术网

永久更改JavaScript字符串的正确方法

永久更改JavaScript字符串的正确方法,javascript,immutability,Javascript,Immutability,在Ruby中,如果我想修改字符串并让它更改原始字符串,我可以使用爆炸字符 string = "hello" string.capitalize! > "Hello" string > "Hello" 在JavaScript中,我找不到这种等价性。例如,将字符串修改为大写,将在第一个实例之后返回原始字符串 var string = "hello"; string.toUpperCase(); > "HELLO" string > "hello" 我知道我可以将其保存为

在Ruby中,如果我想修改字符串并让它更改原始字符串,我可以使用
爆炸字符

string = "hello"
string.capitalize!
> "Hello"
string
> "Hello" 
在JavaScript中,我找不到这种等价性。例如,将字符串修改为
大写
,将在第一个实例之后返回原始字符串

var string = "hello";
string.toUpperCase();
> "HELLO"
string
> "hello"
我知道我可以将其保存为变量,例如

var upperCaseString = string.toUpperCase();
但这似乎效率低下,对我来说是不可取的


我知道这一定很明显,但我缺少什么呢?

JavaScript过程中的字符串作为值而不是引用存在,所以您得到了它:重新分配


string=string.toUpperCase()

toUpperCase
的返回值是一个大写的新字符串。如果您想保留该文件并扔掉原件,请使用以下命令:

string = string.toUpperCase();
顺便说一句,当在node.JS和类似环境的命令行上输入JS语句时,它会打印每个表达式的求值结果,这就是为什么如果您只键入

string.toUpperCase();

正如您推断的那样,它对原始字符串没有影响。

将变量分配给它自己,就像

var string = "hello";
string = string.toUpperCase();

字符串在类似java的javascript中似乎是不可变的。好吧,这就解释了为什么我很难找到等价物。谢谢