js赋值错误
发布于 7 年前 作者 tanming 1314 次浏览 来自 官方Issues

代码原意只是将list1 复制为 list2,并修改  list2 [0].s_state 的值,但执行结果却同时将 list1 [0].s_state 的值也修改了

执行:

var list2 = this.data.list1

list2 [0].s_state = “red”

this.setData({list2})

结果:

this.data.list2 [0].s_state 及 this.data.list1 [0].s_state 两个值均被修改。

3 回复

这是js深拷贝典型应用场景,一般就跟楼上说的,使用JSON.parseJSON.stringify,建议百度一下js数据类型、数据结构相关资料

你的三行代码,实际上的效果就是如下 list2 和 list1 都指向的同一个对象

this.data.list1[0].s_state = "red"
this.data.list2 = this.data.list1

那个……bug在哪?

回到顶部