微信小程序 使用console打印对象有值,点开三角查看详情的时候为null

问题描述:微信小程序 使用setData保存对象后,在html页面获取该属性时发现无法获取。在控制台打印对象有值,点开三角查看详情的时候为null。在本地上调试10次可能有1次出现这种问题,在真机上上测试百分之百出现该问题。无任何报错提示。
代码:

const personalInfo = {
    serviceStationId:serviceStationList[0].netCode,
    serviceStationName:serviceStationList[0].netName
}
_self.setData({
    personalInfo
})
console.log("personalInfo,",_self.data.personalInfo)
console.log("personalInfo,",_self.data.personalInfo.serviceStationId)
console.log("personalInfo,",_self.data.personalInfo.serviceStationName)

控制台截图:

img

你打印这个对象的语句执行的时候, 对象里面的确是有值的,但是当程序继续执行,下面的代码是有对这个对象赋值的语句,所以chrome控制台显示,里面有值。

let obj={
    name:"555",
    age:"15"
  };
  console.log(obj);
  obj.age={};
在浏览 直接输入这个 就会复现 因为 你打印之后 还对 对象操作了 。因为 js对象赋值 只是引用地址赋值过去了,还是指向同一个 地址

如果在view要使用该对象的话,获取到的都是null。js中打印却有值,真的很迷.

这说明在打印之后的代码里有修改这个对象的操作;你输出来的对象是添加了特性的,会变的;你直接输出的就是直接访问当时的值,检查代码在输出之后哪里对 对象操作了