请问这段代码中先打印出this.answersArr ,然后再对它进行循环操作,那打印的值是一开始的,还是后来循环操作后的
打印的是一开始的值,但是因为数组是引用类型,你在控制台展开数组的时候会自动引用最新的值,也就是操作后的。
解决方式你可以通过深拷贝切断引用
console.log(JSON.parse(JSON.stringify(this.answersArr)))
取决于console.log
的实现方式了。chrome的调试工具里输出的是对象引用(支持更加丰富的交互方法),所以console.log
后再修改时可以放映在之前的输出里面的。如果使用console.dir
就只会输出当时的值。
如果是node.js的console.log
,那就是输出序列化后字符串了,自然以后不会再自动更新。
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
javascript 里的
console.log
经常不是一个简单的打印/输出。比如在 chrome 的控制台里,如果 log 的参数是一个对象话,你可以在 console 里查看这个对象“实时”的状态,而不是打印(
console.log
执行)时的状态。当你展开这个对象的时候,里面展示的值时在你点击展开按钮时对象的值。就是说,如果console.log
之后的程序修改了被打印的对象,你可以看到修改后的值。如果你希望看到执行
console.log
时的值,而不受后续的程序影响,可以先转换字符串再打印。