在调试 JavaScript 应用程序时,人们可能经常使用 console.log 来打印数据,这样在出现问题时便于调试,同时也有助于理解数据流。打印变量的常见方式如下:
let user = {
name: "test"
};
console.log(user);
在这种情况下,它将打印:
{ name: 'test' }
如果没有大量的日志记录或者程序不复杂,这样做没问题。但如果要打印很多变量,由于没有明确指示是哪个变量或对象,调试就会变得困难。 所以在这种情况下,在编写 console.log 语句时可以添加一些额外的日志记录。
let user = {
name: "test"
};
console.log("user: " + user);
然而,运行代码后,结果会令人失望,因为它没有打印出预期的内容,user 变量只打印出了一些类型信息,而不是实际的属性及其值。
user: [object Object]
有没有一种更好的记录对象的方法,而不用编写复杂的代码来循环遍历对象并逐个记录每个属性呢?是的,有。实际上,如果我们把变量放在花括号{}里并打印,我们会看到一些有用的东西。
let user = {
name: "test"
};
console.log({user});
输出将如下所示:
{ user: { name: 'test' } }
其工作原理是,它实际上创建了一个新对象,并尝试打印这个对象,其中属性名是变量名,值是变量本身。这样可读性就强多了。而且它可以以可读的方式打印未定义(undefined)或空(null)变量。
let user = undefined;
console.log({user});
let user = null;
console.log({user});
输出为:
{ user: undefined }
{ user: null }
希望这在你调试 JavaScript 时会有所帮助。