我有这样一部分代码
console.log(b);
let c = b.substr(0);
console.log(b[b.length - 1] + ' ' + c[Math.floor(c.length / 2)]);
c[Math.floor(c.length / 2)] = b[b.length - 1];
console.log(b[b.length - 1] + ' ' + c[Math.floor(c.length / 2)]);
//some code changing c
console.log(c);
看起来c和b是内存的同一部分,因为console.log(c);
和console.log(b);
给出的结果相同,而另外两个console.log给出的结果也相同,而第二个显然应该给出两个相同的值(它给出的值不同(。如何正确地复制变量的值,而不产生像JSON.parse(JSON.stringify(b))
这样奇怪的东西?在JS中有没有一种时间和内存有效的方法来做到这一点?
substr函数返回一个新的String(新对象(,因此c和b不是相同的对象。
此外,通过将不同的字符分配给某个索引来更改字符串是不起作用的,因为它不会更改原始对象。
如果你想做的是替换特定索引中的字符,这里有一个有用的帖子:如何在JavaScript中替换特定索引处的字符?