我刚刚注意到,当将包含十六进制字符串值的数据结构记录到控制台时,它将字段输出为1,而不是字符串值。这种情况发生在Chrome和Safari中。
在屏幕截图的顶部,您可以看到正在记录的对象,此对象有一个' _id'字段,这个字符串是一个MongoDb ObjectId,简而言之,它是一个十六进制字符串。
您可以在屏幕截图的顶部看到_id字段包含字符串但是当打印它(对象)值时(展开的视图),它显示为(数字) )1。
第二个日志是我console.log明确表示该值,即
//Where obj is the object being logged in the screenshot.
console.log(obj.data._id);
确定这里发生了什么,我无法看到记录的值如何输出为数字1,这不是十六进制字符串的基数10值,控制台肯定会产生一些关于价值的假设,并处理它,不确定那里到底发生了什么。
所以我的问题是
为什么要在这里打印1张?
答案 0 :(得分:1)
在不知道对象发送到控制台后还发生了什么后,我假设您在这里看到的是Chrome控制台日志如何保留对象的引用,它不会在控制台日志记录时保存快照,而是对该对象的实时引用。
下面是一个简单的例子。
打开Chromes控制台。您会看到x: 1
,但展开对象时,您会看到x: "one"
而非var a = {
x: "one"
};
console.log(a);
a.x = 1;
..
{{1}}