console.log的延迟计算

console.log的延迟计算

我们调试JavaScript时经常会用到console.log打印,但是console.log打印对象时不那么准确。看下面的例子:

1
2
3
const user = { name: 'Ming' };
console.log(user);
user.name = 'Lee';

user.name的初始值为Ming,打印user看到的name值也是Ming。紧接着修改user.name值为Lee,然后再暂开前面打印user对象就看到name值变成了Lee

这个展开看到的值是Chrome为了优化console.log进行的延迟计算,我们看到对象展开后的值是在展开时实时计算的。如果留意在展开对象时会有一个提示Value below was evaluated just now.

为了避免上述问题在打印对象时可以将对象序列化:

1
console.log(JSON.stringify(user, null, 2)); // 格式化

本站采用「署名 4.0 国际」进行许可。