小程序
小游戏
企业微信
微信支付
扫描小程序码分享
var
aa =
'aa'
bb = aa
'cc'
console.log(bb)
//--------------------
a = [
'a'
]
b = a
a[0] =
'c'
console.log(b)
输出 'c'
为啥同样的写法数组的值会被赋到 b 上面呢?
代码片段
https://developers.weixin.qq.com/s/44SxEAmi7e9X
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
数组是引用类型,指向的是内存中的地址,字符串类型相当于new String(),新开了一个内存空间,所以,一个会根据指针改变位置,一个是新开辟的内存地址
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
具体要看你要怎么实现,然后才能有办法,你不说要做什么,没有办法
a = ['a']
b = [].concat(a)
刚找到方法了,用这个就可以 拼接一个新的数组
对的,这个是数组连接,方法很多,主要看你实现什么
一个是aa变量,一个是a[0],怎么是同样写法,你把每个地方的类型打出来看看区别
a赋值给b,改变a的值,为啥会把b的值也改了?
你说的是第二段代码吧,a赋值,b指向a,a取什么值b当然会和a一致啊
那第一段代码呢? bb也是指向aa的吖,为啥改了aa的值 bb还是原值?
上面一个是字符串一个是数组,类型不一样,
有什么办法可以数组赋值给bb 改变aa的值 bb 不变呢?
? 没人吗? 算不算是BUG吖?
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
数组是引用类型,指向的是内存中的地址,字符串类型相当于new String(),新开了一个内存空间,所以,一个会根据指针改变位置,一个是新开辟的内存地址
具体要看你要怎么实现,然后才能有办法,你不说要做什么,没有办法
a = ['a']
b = [].concat(a)
刚找到方法了,用这个就可以 拼接一个新的数组
对的,这个是数组连接,方法很多,主要看你实现什么
一个是aa变量,一个是a[0],怎么是同样写法,你把每个地方的类型打出来看看区别
a赋值给b,改变a的值,为啥会把b的值也改了?
你说的是第二段代码吧,a赋值,b指向a,a取什么值b当然会和a一致啊
那第一段代码呢? bb也是指向aa的吖,为啥改了aa的值 bb还是原值?
上面一个是字符串一个是数组,类型不一样,
有什么办法可以数组赋值给bb 改变aa的值 bb 不变呢?
? 没人吗? 算不算是BUG吖?