1
var cun = function(cun){
    cun[0] = 'z';
    console.log(cun[0]);
    return cun;
}
cun("ratul");

为什么它是控制台上的 print r 而不是 z ?为什么我不能使用数组表示法更改字符串?

4

3 回答 3

3

字符串是不可变的。你不能改变它们。您必须为此创建一个新字符串。

function cun(str) {
    var newString = 'z' + str.substring(1);
    console.log( newString[0] );
    return newString;
}

cun('ratul');
于 2013-10-02T06:23:10.823 回答
2

因为字符串在 JavaScript 中是不可变的(意味着你不能改变它们的值)。

您可以通过多种方式完成您正在尝试做的事情,包括:

var cun = function(cun){
    return "z" + cun.slice(1);
}
cun("ratul");
于 2013-10-02T06:24:59.767 回答
0

来自犀牛书

在 JavaScript 中,字符串是不可变的对象,这意味着其中的字符可能不会被更改,并且对字符串的任何操作实际上都会创建新的字符串。字符串是按引用分配的,而不是按值分配的。通常,当一个对象通过引用分配时,通过一个引用对该对象所做的更改将通过对该对象的所有其他引用可见。但是,由于字符串无法更改,因此您可以对字符串对象进行多次引用,而不必担心字符串值会在您不知情的情况下更改

你可以试试:

String.prototype.replaceAt=function(index, character) {
   return this.substr(0, index) + character + this.substr(index+character.length);
}
var hello="ratul";
alert(hello.replaceAt(0, "z"));

这是工作演示

于 2013-10-02T06:27:41.957 回答