Javascript String 是不能变的吗
我在很多书上也看到这个效果,也不时没有深究。直到这个效果,我觉得提的蛮好的。
我自己测试了一下:
1、var str1=str2=“can‘t change”;
2、在控制台下,看了一下str的一切方法,并用str1测试了一些方法。然后看str2的值有没有变化,即可以复杂判别所定义的字符串有没有变化。(str1和str2都可以看成是指向这个字符串地址的变量,假设str1的一些操作能改动这个字符串,那str2对应的值也会变化。)
3、确实发现了一些效果:假设方法设计到修正到字符串,会有两种状况:
要么是该方法修正了字符串,不过是生成了一个新的字符串传前往,并没有修正原来的字符串。
要么是str1确实变化了,不过是指向了一个新的字符串或许是对象等,曾经不会指向原来的字符串了。此时str2值依然没有变化,说明这个字符串依然没有变。
4、我又想到string其实也是对象的一种,我就给str1赋予了一些对象方法,但是结果测试此字符串依然没有变化。这点我也很困惑。
所以,我的初步复杂测试,string的值一旦存在了,确实不能改动了。还请大牛讲一下,外部的原理和完成方法。