收藏
回答

求解,数组赋值问题

var aa = 'aa'
var bb = aa
aa = 'cc'
console.log(bb)
输出 ['aa']
//--------------------
 
var a = ['a']
var b = a
a[0] = 'c'

console.log(b)

输出 'c'


为啥同样的写法数组的值会被赋到 b 上面呢?



代码片段

https://developers.weixin.qq.com/s/44SxEAmi7e9X

最后一次编辑于  07-04
回答关注问题邀请回答
收藏

3 个回答

  • 天魔&龙魂
    天魔&龙魂
    07-04

    数组是引用类型,指向的是内存中的地址,字符串类型相当于new String(),新开了一个内存空间,所以,一个会根据指针改变位置,一个是新开辟的内存地址

    07-04
    赞同
    回复 3
    • 天魔&龙魂
      天魔&龙魂
      07-04

      具体要看你要怎么实现,然后才能有办法,你不说要做什么,没有办法

      07-04
      回复
    • 無
      07-04

      a = ['a']

      b = [].concat(a)

      刚找到方法了,用这个就可以 拼接一个新的数组

      07-04
      回复
    • 天魔&龙魂
      天魔&龙魂
      07-04

      对的,这个是数组连接,方法很多,主要看你实现什么

      07-04
      回复
  • \
    \
    07-04

    一个是aa变量,一个是a[0],怎么是同样写法,你把每个地方的类型打出来看看区别

    07-04
    赞同
    回复 6
    • 無
      07-04

      a赋给b,改变a的值,为啥会把b的值也改了?

      07-04
      回复
    • \
      \
      07-04回复

      你说的是第二段代码吧,a赋值,b指向a,a取什么值b当然会和a一致啊

      07-04
      回复
    • 無
      07-04回复\

      那第一段代码呢?  bb也是指向aa的吖,为啥改了aa的值 bb还是原值?

      07-04
      回复
    • \
      \
      07-04回复

      上面一个是字符串一个是数组,类型不一样,

      07-04
      回复
    • 無
      07-04回复\

      有什么办法可以数组赋值给bb 改变aa的值 bb 不变呢?

      07-04
      回复
    查看更多(1)
  • 無
    07-04

    ? 没人吗? 算不算是BUG吖?

    07-04
    赞同
    回复