小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如上图所示,点击图片进行预览操作,第一次点击时,输出的每一个图片路径前都拼接了'aa/',但是第二次点击时,竟然第一次拼接的'aa/'还在,什么鬼,我又没有使用setData将goodsinfo.imgs重新赋值。按理讲,每次进来goodsimg[i] 都应该是没拼接‘aa/’的啊!
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
你好,数组这样直接赋值是将数组的引用赋给了临时变量,所以对临时变量进行修改会使原数组发生改变
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
谢谢
58行改成 var goodsings = [...this.data.goodsinfo.imgs] 试下 ,可能是赋值有问题
按你这样就可以,可是正常的赋值为什么会出现问题呢!
let a = ["aaa","bbb"]let b = aa[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竟然是这种做法,谢了
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
你好,数组这样直接赋值是将数组的引用赋给了临时变量,所以对临时变量进行修改会使原数组发生改变
谢谢
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竟然是这种做法,谢了