_.isError(value)

138

_.isError(value)

_.isError检查一个值是否是`Error`, `EvalError`, `RangeError`, `ReferenceError`,`SyntaxError`, `TypeError`, `URIError`对象

参数

value (*): 需要检查的值

返回值

(boolean): 如果value是error对象返回true,否则false

例子

_.isError(new Error);
// => true
 
_.isError(Error);
// => false

源代码

import baseGetTag from './.internal/baseGetTag.js'
import isObjectLike from './isObjectLike.js'
import isPlainObject from './isPlainObject.js'

/**
 * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
 * `SyntaxError`, `TypeError`, or `URIError` object.
 *
 * @since 3.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
 * @example
 *
 * isError(new Error)
 * // => true
 *
 * isError(Error)
 * // => false
 */
//检查一个值是否是`Error`, `EvalError`, `RangeError`, `ReferenceError`,`SyntaxError`, `TypeError`, `URIError`对象
function isError(value) {
  if (!isObjectLike(value)) {//判断value是否是object-like对象,如果不是返回false
    return false
  }
  const tag = baseGetTag(value)//获取value的toStringTag
  return tag == '[object Error]' || tag == '[object DOMException]' ||
    (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value))
    //如果toStringTag是[object Error]或者[object DOMException]
    //如果value的message属性是字符串,并且value的name属性是字符串,并且value是原生对象
}

export default isError

 

posted @ 2018-12-25 18:17  hahazexia  阅读(568)  评论(0)    收藏  举报