有如下代码:
var id = that.data.wid
var tfl = that.data.tfl
var tpnew = that.data.tfl.tp
var qa = that.data.queryResult
var zts = qa[id].zts
var tpold = ''
if(zts&&zts.length>0){
zts.forEach(function(item){
if(item.zt==that.data.title&&item.hasOwnProperty('tp')){
tpold=item.tp
}
})
}
if(tpold){
if(tpnew.length>0){
tpold.forEach(function(item){
var okg = 0
tpnew.forEach(function(it,index){
if(item==it){
console.log('tfl:',tfl)
console.log('tpnew:',tpnew)
tpnew.splice(index,1) ///////////修改tpnew的值
console.log('tpnew:',tpnew)
okg=1
console.log('tfl2:',tfl) ////////这时候显示tfl的值也被改了
}
if(index==tpnew.length-1&&okg==0){
console.log('id:',that.data.swid)
}
})
})
}
}
在运行过程中,更改了tpnewr的值后,tfl的值也随之改变,请问我的代码出错在哪?
去了解下对象深拷贝和浅拷贝
js基本知识了。
一般自己写几行代码演示一下就明白了。
let a = {b:{c:{d:4,e:5}}}
let b = a.b
let c = b.c
console.log(c)
c.d = 6
console.log(b)