字符串的不可变,指的是字符串值不可变,虽然看上去可以改变内容,但其实是地址变了,在内存中开辟了一个新的内存空间。

var str = 'abc';
str = 'hello';

当重新给 str 赋值的时候,常量 'abc' 不会被修改,依然在内存中。
给 str 赋值为 'hello' 的时候,会重新在内存中开辟空间,这个特点就是字符串的不可变。
由于字符串的不可变,在大量拼接字符串的时候会有效率问题。

var str = '';
for (var i = 0; i < 1000000; i++) {
    str += i;
}
// 这个结果需要花费大量的时间来显示,因为需要不断的开辟新的空间
console.log(str); 

BlueBlue
10 声望1 粉丝

前端新手一枚