如上图所示,点击图片进行预览操作,第一次点击时,输出的每一个图片路径前都拼接了'aa/',但是第二次点击时,竟然第一次拼接的'aa/'还在,什么鬼,我又没有使用setData将goodsinfo.imgs重新赋值。按理讲,每次进来goodsimg[i] 都应该是没拼接‘aa/’的啊!
如上图所示,点击图片进行预览操作,第一次点击时,输出的每一个图片路径前都拼接了'aa/',但是第二次点击时,竟然第一次拼接的'aa/'还在,什么鬼,我又没有使用setData将goodsinfo.imgs重新赋值。按理讲,每次进来goodsimg[i] 都应该是没拼接‘aa/’的啊!
2 个回答
你好,数组这样直接赋值是将数组的引用赋给了临时变量,所以对临时变量进行修改会使原数组发生改变
谢谢
58行改成 var goodsings = [...this.data.goodsinfo.imgs]
试下 ,可能是赋值有问题
按你这样就可以,可是正常的赋值为什么会出现问题呢!
let a = ["aaa","bbb"]
let b = a
a[0] = "ccc"
a[1] = "ddd"
console.log(b)
let a = ["aaa","bbb"]
let b = [...a]
a[0] = "ccc"
a[1] = "ddd"
console.log(b)
你控制台运行下对比下两者区别, 操作a时会影响b, 主要还是数组赋值的问题,
可以去网上看下js基本数据类型和引用数据类型的区别
试了下,没想到js竟然是这种做法,谢了