- javascript中的字符串,在JavaScript中不支持修改字符串:
> var a = "qwer";
"qwer"
> a[0]
"q"
> a[0] = 'l'
"l"
> a
"qwer"
这就说明在JavaScript中不支持修改字符串,如果需要字符串的值的话,我列出两个方法:
- 使用JavaScript提供的方法
> c = "lkjhgf"
"lkjhgf"
> c = "1" + c.slice(1, c.length)
"1kjhgf"
- 先将字符串转换成数组操作,操作完成以后再转换成字符串
> c = c.split("")
["1", "k", "j", "h", "g", "f"]
> c[1] = "2"
"2"
> c.join("")
"12jhgf"
这两种方式我觉得都不好。第一种方式看似是再字符串上操作,其实是重新赋值,也就是需要重新开辟空间;第二种主要是需要反复的转换。
- 引用类型赋值属于浅拷贝(也就是指向同一块空间)
// 首先看对象的例子
> a = {a:"123",b:12}
{a: "123", b: 12}
> b = a
{a: "123", b: 12}
> b
{a: "123", b: 12}
> b.a = "qwe"
"qwe"
> b
{a: "qwe", b: 12}
> a
{a: "qwe", b: 12}
// 接下来测试数组
> c = [1,2,3,4,5]
(5) [1, 2, 3, 4, 5]
> d = c
(5) [1, 2, 3, 4, 5]
> d[0] = 100
100
> d
(5) [100, 2, 3, 4, 5]
> c
(5) [100, 2, 3, 4, 5]
最重要的就是这两种类型,有时候会忽略,如果你想改变现有值而原来的值不发生改变,那么需要使用深拷贝。
网友评论