字符串的不可变指的是字符串的值不可变,虽然看上去可以改变内容,但其实是地址指向改变了,新改变的指会在内存中新开辟一个内存空间,而原来的旧指内存空间还是存在的,我们看到的字符串内容改变实际上是内存指向的改变。
如
var str = 'hello';
console.log(str)
str = 'word';
console.log(str)
运行过程如下 每次对str都会重新开辟一个内存区域
这个特性会带来什么问题? 首先我们应该想到当我们不断对字符串进行拼接后,会开辟很多内存区域,这样会造成严重的性能问题
我们粗暴的测试一下
var str = 'hello';
for(var i=1;i<=10000000;i++){
str+=i;
}
console.log(str)
几秒后才打印了数据