javascript - 更新 setTimeout 问题中的 JSON 对象

标签 javascript json

var state = {
  item1 : {
    text : "hi hi"
  }
}

var i = 5;

function test() {
  state.item1.text = i;
  console.log(state)
  i--
  if (i >= 0) {
    setTimeout(test, 1000);
  }
}

test();

有一个非常奇怪的问题,当更新这个 json 对象时,它没有显示正确的值。任何帮助深表感谢。如果我要控制台日志 console.log(state.item1) 它将打印正确的值。但 console.log(state) 显示的值不正确。

Codepen 示例 http://codepen.io/chrisburgin95/pen/xEzvWz

最佳答案

console.log() 不存储对象的副本。相反,当您展开嵌套属性时,它将读取每个属性的当前值。

由于您的代码会改变同一个对象,因此在所有超时触发后展开记录的对象将显示最终值。

关于javascript - 更新 setTimeout 问题中的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028491/

相关文章:

javascript - 当用户遍历 map 时,如何根据当前 map Canvas 绘制标记

json - NodeJs、Express、BodyParse 和 JSON

java - 在java Hashmap中使用JSON对象

javascript - ajax post后用服务器的值更新原始对象

ios - 如何更改 JSON key 名称 Swift?

javascript - 如何知道两个子进程何时解析了nodejs

javascript - 子文件夹中的 Vue CLI 3 SPA,根目录中的静态 HTML 页面

javascript - Prototype 的 DOM 扩展与第 3 方 JS 库发生冲突——我最好的选择是什么?

php - Ajax 搜索引擎优化技术

json - 如果我在 swift 的结构中使用协议(protocol)类型,我的结构不符合协议(protocol) 'Decodable'/'Encodable'