【问题标题】:Type check not working类型检查不起作用
【发布时间】:2018-07-23 17:16:59
【问题描述】:
Object.prototype.search = function() {

    if (!(Array.isArray(this) || typeof this === 'object' || this === 'undefined')) {

        throw {
            number: 1,
            err: 'test error'
        }
    }

    var count = 0

    for (item in this) {

        if (typeof this[item] !== 'undefined' || (typeof this[item] !== 'string' && typeof this[item] !== 'number' ) ){
            count++
        }
    }

    return count - 1

}

array1 = ['x', , , 'x', , , 'x', 1, , , , , , 7, 8]

try {

    console.log(array2.search())
}

catch (e) {

    console.log('error ' + e.number)
}

是的,我知道 array2 不存在

返回“错误未定义” 类型检查不存在的 array2 对象不会触发抛出?

如何捕捉原型方法中的错误?

【问题讨论】:

  • 当您提出问题时,文本区域右侧有一个橙色的大如何格式化框,其中包含有用的信息。还有一个完整的格式化辅助工具栏。还有一个 [?] 按钮提供格式化帮助。 并且一个预览区域位于文本区域和发布您的问题按钮之间(这样您就必须滚动过去才能找到该按钮,以鼓励您查看它)显示您的帖子发布时的样子。使您的帖子清晰,并证明您花时间这样做,可以提高您获得好答案的机会。
  • 这是您的第四个问题。您现在应该可以正确地进行格式化了。
  • 单独:从不Object.prototype添加一个可枚举属性,array2.search() 将抛出一个ReferenceError,因为array2 是一个未声明的标识符。代码末尾还有一个额外的}。最后:for-in 不是循环数组内容的正确方法。
  • @T.J.Crowder 你能告诉我为什么我的答案是错误的并给我投反对票吗?
  • 如果 coder 没有理由那么请不要投反对票,如果你那么你必须给我们你投反对票的理由?

标签: javascript error-handling typechecking


【解决方案1】:

你应该用array1替换array2。

Object.prototype.search = function() {
  if (!Array.isArray(this) || typeof this === 'object' || this === undefined) {
    throw {
      number: 1,
      err: 'test error'
    }
  }
  var count = 0
  for (item in this) {
    if (typeof this[item] !== undefined) {
      count++
    }
  }
  return count - 1
}

array1 = ['x', , , 'x', , , 'x', 1, , , , , , 7, 8];
try {
  console.log(array1.search());
} catch (e) {
  console.log('error ' + e.number)
}

【讨论】:

  • 投反对票的原因是什么,如果投反对票的人有理由,谁能解释我?
  • 可能有人因为这个问题的形成方式不好而否决了这个问题,然后当有真正的好人只看问题并提供帮助时他们会生气(是的,仍然有这样的孩子在那里......)。无论如何,我认为你的答案是最正确的,不应该收到这些随机的反对票,我的赞成票并继续帮助人们。
  • @mrdeadsven 谢谢你,但你知道这里的人甚至没有回答他们为什么投反对票。我真的不明白为什么人们会无缘无故地投反对票。如果用户给他的否定标记一个答案没有问题,但至少反馈可能会保持下次改进的范围。
  • 确实欢迎来到互联网,每个人都无缘无故地发疯,只是做一些惹恼你的事情。无论如何,不​​要让它打扰你太多,似乎这是一个随机的人,无缘无故地对每个人投反对票。它发生了,很伤心,但你无能为力。只要你知道你帮助别人回答了一切都应该没问题:)。
  • 我完全同意 Dipak.. 这个论坛的目的当然是提供帮助,而不是阻止正在学习的人
【解决方案2】:

它返回 error undefined,因为您正在创建一个名为 array1 的数组,但在名为 array2 的未定义变量上使用了您的 search 函数。

【讨论】:

  • 我认为没有任何错误的描述,所以我投票给你,但你应该添加代码,以便其他人找到更好的参考。
  • 我知道它的数组错误,这就是它应该抛出错误的原因
猜你喜欢
  • 2018-11-21
  • 2021-08-29
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2022-07-14
  • 1970-01-01
相关资源
最近更新 更多