2013-10-02 34 views

回答

3

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

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

cun('ratul'); 
+0

谢谢:) @Joe Simmons – rat

+0

不客气:) –

2

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

你可以完成你正在尝试做各种方式,包括:

var cun = function(cun){ 
    return "z" + cun.slice(1); 
} 
cun("ratul"); 
0

rhino book

在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")); 

Here is working Demo

+0

'通过一个引用对对象所做的更改将通过所有其他引用可见*不正确。看看这个小提琴:http://jsfiddle.net/JdW6m/ –

+0

,但我从来没有说它会改变..... :(最后一句是'但是,你可以有一个字符串对象的多个引用,而不用担心字符串值会在你不知道它的情况下改变' –

+0

关于对象的一般信息http://stackoverflow.com/a/19087091/821057 –

相关问题