抛出Error(’msg’)vs抛出新的Error(’msg’)

2020/10/24 02:01 · javascript ·  · 0评论
var err1 = Error('message');
var err2 = new Error('message');

有什么不同?在chrome控制台中查看它们时,它们看起来相同。对象和__proto__上的属性相同几乎Error就像是工厂一样。

哪一个是正确的,为什么?

两者都很好;这在规范中有明确说明

...因此,函数调用Error(…)等效于new Error(…)具有相同参数的对象创建表达式

Error确实像一个工厂,像其他一些本土的构造函数:ArrayObject,等所有的检查类似if (!(this instanceof Array)) { return new Array(arguments); }(但请注意,String(x)new String(x)是非常不同的,对于Number也是如此Boolean。)

就是说,如果发生错误,甚至不需要抛出Error对象……throw 'Bad things happened';也可以工作。
您甚至可以抛出对象文字进行调试:

throw {message:"You've been a naughty boy",
       context: this,
       args: arguments,
       more:'More custom info here'};
本文地址:http://javascript.askforanswer.com/paochuerrormsgvspaochuxindeerrormsg.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!