为什么在字符串上使用某些函数(如toLowerCase()
)时需要为其分配一个新变量,但sort()
,reverse()
或pop()
等其他函数则不需要用在阵列上?
例如,下面的代码是错误的:
var str = "Hello World";
str.toLowerCase();
但是下面的代码是正确的:
var arr = ["This","is","my","array"]
arr.sort();
我正在阅读在字符串上使用toLowerCase()
时,我必须使用以下代码编写代码:
str = str.toLowerCase();
答案 0 :(得分:4)
因为字符串在JavaScript中是不可变的,这意味着您无法更改它们。每次尝试修改字符串时,都会有效地创建一个包含更改的新字符串。
因此,当你执行str.toLowerCase();
时,它不会修改str
,它实际上是用字母的小写字母复制它。
数组不同,因为它是对数组项的引用列表。您可以将其他项arr[5]=11
分开更改。您还可以添加或删除项目。 sort()
和reverse()
函数重新排列数组中的项目。
顺便说一句,这个概念并不是JavaScript独有的。许多其他现代语言也使字符串不可变(也许所有语言都有String
作为内置类型)。