We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文为读 lodash 源码的第二百二十二篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import getTag from './.internal/getTag.js' import isObjectLike from './isObjectLike.js' import isPlainObject from './isPlainObject.js'
《lodash源码分析之数据类型获取的兼容性》
《lodash源码分析之isObjectLike》
《lodash源码分析之isPlainObject》
isError 用来判断一个值是否为 Error 对象。
isError
Error
源码如下:
function isError(value) { if (!isObjectLike(value)) { return false } const tag = getTag(value) return tag == '[object Error]' || tag == '[object DOMException]' || (typeof value.message === 'string' && typeof value.name === 'string' && !isPlainObject(value)) }
Error 肯定是一个对象,因此如果不能通过 isObjectLike 检测,返回 false 。
isObjectLike
false
接下来检测 value 的 Tag 是否为 [object Error] 或者 [object DOMException] 这两种常见的 Error 对象,如果是,返回的也是 true 。
value
Tag
[object Error]
[object DOMException]
true
如果通过 Tag 检测不出来,则判断 message 和 name 是否为 string ,因为 Error 对象一般都会有这两个属性,并且一般都为 string 类型,并且 value 不能为纯对象,如果满足这三个条件,也认为是 Error 对象,当然,这并不严谨。
message
name
string
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本文为读 lodash 源码的第二百二十二篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
《lodash源码分析之数据类型获取的兼容性》
《lodash源码分析之isObjectLike》
《lodash源码分析之isPlainObject》
源码分析
isError
用来判断一个值是否为Error
对象。源码如下:
Error
肯定是一个对象,因此如果不能通过isObjectLike
检测,返回false
。接下来检测
value
的Tag
是否为[object Error]
或者[object DOMException]
这两种常见的Error
对象,如果是,返回的也是true
。如果通过
Tag
检测不出来,则判断message
和name
是否为string
,因为Error
对象一般都会有这两个属性,并且一般都为string
类型,并且value
不能为纯对象,如果满足这三个条件,也认为是Error
对象,当然,这并不严谨。License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: