使用数组处理 JavaScript 字符串 为什么它在控制台上打印“R”而不是“Z”

javascript string handling with array why it's print 'r' on console but not 'z'

本文关键字:打印 控制台 处理 数组 JavaScript 字符串 为什么      更新时间:2023-09-26
var cun = function(cun){
    cun[0] = 'z';
    console.log(cun[0]);
    return cun;
}
cun("ratul");

为什么在控制台上打印 r 而不是 z? 为什么我不能使用数组符号更改字符串?

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

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

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

您可以通过多种方式完成您尝试执行的操作,包括:

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

摘自《犀牛书》:

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

这是工作演示