1

Javascript 有许多可以在其上执行的字符串操作操作。所以我们有 concat()、slice()、match() 等方法

我的问题是所有这些字符串操作方法是否都返回一个新的字符串值作为结果,或者是否有一些方法实际上修改了方法中使用的实际字符串?

4

3 回答 3

3

JavaScript(和许多其他语言)中的字符串被实现为不可变对象。这有一些有益的特性:

  1. 它是线程安全的,更具体地说,
  2. 可以安全地保存对同一字符串的多个引用,而不必担心值会发生变化。

这也意味着,如果所有字符串方法旨在修改原始值,则它们必须返回一个新字符串。

于 2013-01-31T07:32:46.770 回答
0

返回值是原始字符串的克隆。

也就是说,调用concat, matchorslice不会修改原来的字符串。

您可以随时参考MDN 参考文档

但是,引用来源

康卡特

组合两个或多个字符串的文本并返回一个新字符串

于 2013-01-31T07:39:31.627 回答
0

字符串是不可变的,一旦创建,它们甚至不能再次修改。

Mdn:

与 C 等语言不同,JavaScript 字符串是不可变的。这意味着一旦创建了字符串,就无法修改它。但是,仍然可以基于对原始字符串的操作创建另一个字符串,例如,原始字符串的子字符串(通过选择单个字母或使用 String.substr())或使用连接运算符连接两个字符串(+) 或 String.concat()。

因此,是的。每个字符串操作都返回一个新字符串

于 2013-01-31T07:54:49.780 回答