new Error()
是一个具有名称,消息,堆栈等属性的对象,但是当在控制台上显示时,它是一个字符串。
有意义;它可能只是被强制转换成字符串。但是new Error().toString()
没有返回相同的结果。这没有任何意义,唯一可能发生的情况是,它被强制转换为字符串,就像Date对象那样。
但这里没有发生这种情况,因为它与toString()
方法的结果不同。new Date()
和new Date().toString()
相同。那么他们有特殊的规则来展示它们吗?
唯一可能发生的情况是它被强制转换为字符串
我不认为这部分是真的。例如:
const log = (value) => {
if (value instanceof Error) {
// first block
} else {
// second block
}
};
如果你像调用log(new Error())
那样调用上面的函数,它将执行第一个块。如果像log(new Error().toString())
那样调用它,它将执行第二个块。