【发布时间】:2016-09-17 11:48:57
【问题描述】:
Eloquent JavaScript 说字符串值是不可变的,作为 Stackoverflow 的第一个问题的答案:Understanding Javascript immutable variable
但是如果我们写如下:var string = "hello world"; string = "permitted";,字符串真的被修改了。
我上面提到的答案只是说明对象是可变的,而不是其他值。
既然字符串可以像我刚才告诉你的那样被修改,那是不是意味着字符串原始值在'='成功时会自动转换为对象?
所以前面的代码将严格等同于:var string = new String("hello world"); string = new String("permitted")。这可以解释为什么要修改字符串的值。
【问题讨论】:
-
你可以覆盖变量,但是你不能改变字符串,例如
string.replace(something)创建一个新字符串,它不能修改字符串,因为它是不可变. -
但是你没有修改字符串。您只是为该变量分配了一个新字符串。
-
@NiettheDarkAbsol:是的,我同意你的看法。真的会发生吗?
-
@adeneo :所以没有任何转换字符串->字符串实例?
-
"immutable" 意味着字符串的值不能改变,这并不意味着你不能给变量分配不同的值。字符串方法不会改变原始字符串,它们只是创建一个新字符串。
标签: javascript string variables constants immutability