首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抛出错误(‘msg’) vs抛出新错误(‘msg’)

抛出错误(‘msg’) vs抛出新错误(‘msg’)
EN

Stack Overflow用户
提问于 2012-11-09 01:42:04
回答 2查看 35.7K关注 0票数 203
代码语言:javascript
复制
var err1 = Error('message');
var err2 = new Error('message');

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-09 01:43:22

两者都很好;这是在the specification中显式声明的

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

票数 207
EN

Stack Overflow用户

发布于 2012-11-09 01:46:17

Error的行为确实像一个工厂,就像其他一些本机构造函数一样:ArrayObject等都会检查类似if (!(this instanceof Array)) { return new Array(arguments); }的东西。(但请注意,String(x)new String(x)非常不同,NumberBoolean也是如此。)

也就是说,在出现错误的情况下,甚至不需要抛出Error对象...throw 'Bad things happened';也可以工作

您甚至可以抛出一个用于调试的对象文字:

代码语言:javascript
复制
throw {message:"You've been a naughty boy",
       context: this,
       args: arguments,
       more:'More custom info here'};
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13294658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档