问题场景:
在打印的数组变量后进行了数组的处理
先console.log()一个数组,后对数组进行一些处理。
问题描述
打印的数据是处理后的数据!
代码如下:
console.log(this.data1)
this.data1.forEach((item, index) => {
if (item.children instanceof Array) {
item.children.forEach((ite, inde) => {
if(ite.children instanceof Array ){
ite.children.forEach((it) =>{
server.getModelDisplay(it.mcId).then((res) => {
if (res.code == 200) {
it.children = res.data;
}
});
})
}
});
}
})
原因分析:
console.log() 中打印的引用数据类型时,在引用数据发生改变后,其打印的值也会被修改。
使用console.log()打印数据时,对于基本类型number、string、boolean、null、undefined的输出是可信的,但是当console.log()打印的是引用类型Object、Array时打印的是不可信的(会出现上述问题)。console.log()打印引用数据时会输出当时数据的快照,当开发人员打开变量是,程序会自动去查找打开变量时刻存储的值返回,此时也许就已经是处理后的值了。
解决方案:
1、将变量序列化JSON.stringify()为字符串后输出。
2、使用debugger断电查看变量值。
3、注释下方操作变量方法。