';新';Javascript中用于错误()处理的运算符

';新';Javascript中用于错误()处理的运算符,javascript,error-handling,es6-promise,Javascript,Error Handling,Es6 Promise,我正在使用Promissions,并发现在拒绝时,建议将Error()对象作为参数传递,以便启用错误处理 我找到了一些示例,其中给出了newerror(),还有一些示例只传递了Error() 在测试了几个案例之后,我没有发现一种用法和另一种用法之间有任何区别,正如在这里看到的,两种拒绝的行为似乎完全相同: const p = new Promise((resolve, reject) => { setTimeout(reject, 1000, Error("Nope..."));

我正在使用Promissions,并发现在拒绝时,建议将
Error()
对象作为参数传递,以便启用错误处理

我找到了一些示例,其中给出了
newerror()
,还有一些示例只传递了
Error()

在测试了几个案例之后,我没有发现一种用法和另一种用法之间有任何区别,正如在这里看到的,两种拒绝的行为似乎完全相同:

const p = new Promise((resolve, reject) => {

    setTimeout(reject, 1000, Error("Nope...")); 
    //setTimeout(reject, 1000, new Error("Nope..."));       
});    


p.then(val => { console.log(val) })
.catch(error  => { console.error(error.message) });
在这种情况下,两种错误处理方法之间的实际区别是什么

在测试了几个案例之后,我没有发现一种用法和另一种用法之间有任何区别

这是因为当您将
Error
作为函数调用时(不使用
new
),它的行为与您使用
new
调用它的行为完全相同。也就是说,
Error(x)
newerror(x)
做完全相同的事情。这是
Error
功能的“功能”。通常,不使用new调用函数和使用
new
调用函数是有区别的,只是在这种情况下没有区别

发件人:

错误构造函数:

  • 当作为函数而不是构造函数调用时,创建并初始化新的
    Error
    对象。因此,函数调用
    Error(…)
    相当于具有相同参数的对象创建表达式
    newerror(…)

我应该知道这是一个重复的问题。如果你不接受,我将删除我的答案。(重复的问题不一定是坏事。在这种情况下,我不认为我的答案增加了dupetarget答案中没有涵盖的内容。)