我刚刚注意到,当将包含十六进制字符串值的数据结构记录到控制台时,它会将字段输出为 1,而不是字符串值。 Chrome 和 Safari 中就会出现这种情况。
在屏幕截图的顶部,您可以看到一个正在记录的对象,该对象有一个“_id”字段,该字符串是一个 MongoDb ObjectId,简而言之,它是一个十六进制字符串。
您可以在屏幕截图的顶部看到 _id 字段包含一个字符串,但是当打印它的(对象)值(展开 View )时,它显示为(数字)1。
第二个日志是我通过 console.log 显式记录该值,即
//Where obj is the object being logged in the screenshot.
console.log(obj.data._id);
不确定这里到底发生了什么,我看不到正在记录的值如何输出为数字 1,这不是十六进制字符串的以 10 为基数的值,控制台肯定对该值做出了一些假设,并且正在处理它,但不确定那里到底发生了什么。
所以我的问题是
为什么这里打印 1?
最佳答案
在不知道对象被发送到控制台后还发生了什么的情况下,我假设您在这里看到的是 Chrome 的控制台日志如何保留对该对象的引用,它不保存快照控制台日志记录的时间,而是对对象的实时引用。
下面是一个简单的例子。
打开 Chrome 控制台。您将看到 {x: "one"}
,但是当您展开对象时,您将看到 x: 1
而不是 x: "one"
>..
var a = {
x: "one"
};
console.log(a);
a.x = 1;
关于javascript - 用于显示十六进制数字的控制台设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50358679/