Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类型检查不起作用_Javascript_Error Handling_Typechecking - Fatal编程技术网

Javascript 类型检查不起作用

Javascript 类型检查不起作用,javascript,error-handling,typechecking,Javascript,Error Handling,Typechecking,是的,我知道array2不存在 返回“错误未定义” 类型检查不存在的array2对象未触发抛出 如何捕捉原型方法中的错误?您应该将array2替换为array1 Object.prototype.search=函数{ if!Array.isArraythis | | typeof this===“object”| | this===未定义{ 扔{ 编号:1, 错误:“测试错误” } } 变量计数=0 对于本文件中的项目{ 如果此[项目]的类型!==未定义{ 计数++ } } 返回计数-1 }

是的,我知道array2不存在

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


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

您应该将array2替换为array1

Object.prototype.search=函数{ if!Array.isArraythis | | typeof this===“object”| | this===未定义{ 扔{ 编号:1, 错误:“测试错误” } } 变量计数=0 对于本文件中的项目{ 如果此[项目]的类型!==未定义{ 计数++ } } 返回计数-1 } 数组1=['x','x','x',1,,'7,8]; 试一试{ console.logarray1.search; }抓住e{ console.log'error'+e.number
} 它返回未定义的错误,因为您正在创建一个名为array1的数组,但对一个名为array2的未定义变量使用了搜索函数。

当您提出问题时,文本区域右侧有一个大橙色的“如何设置格式”框,其中包含有用的信息。还有一个完整的格式化工具条。还有一个[?]按钮提供格式化帮助。还有一个预览区,位于文本区和“发布您的问题”按钮之间,这样您就必须滚动过去才能找到该按钮,以鼓励您查看该按钮,显示您的帖子在发布时的外观。把你的帖子说清楚,并证明你花了时间这样做,可以提高你得到好答案的机会。这是你的第四个问题。您现在应该已经正确设置了格式。另外:永远不要将可枚举属性添加到Object.prototype,array2.search将抛出引用错误,因为array2是未声明的标识符。代码末尾还有一个额外的}。最后:因为in不是循环数组内容的正确方式。@T.J.Crowder你能告诉我为什么我的答案是错误的并给我否决票吗?如果编码员没有理由,那么请不要否决票,如果你必须给我们你否决票的理由吗?有人能解释一下为什么吗,如果投反对票的人有理由吗?可能是因为问题的形成方式不好而投反对票的人,然后当有真正的好人看着问题并帮助他们时,他们会发疯。是的,还有像这样的孩子。。。。不管怎样,我认为你的答案是最正确的,不应该收到这些随机的否决票,不应该收到我的反对票,不应该继续帮助别人。@Deadsven先生谢谢你,但你知道这里的人甚至没有回答他们为什么投否决票。我真不明白为什么人们会毫无理由地投否决票。如果用户对某个答案打了否定的分数,则没有问题,但至少反馈仍有可能在下次改进。的确,欢迎来到互联网,在那里,每个人都会无缘无故地发疯,只是做一些让你恼火的事情。不管怎么说,不要让它给你带来太多麻烦,好像是一个随机的人在无缘无故地否决所有人。它发生了,很悲伤,但你对此无能为力。只要你知道你在回答问题时帮助了别人,一切都应该是好的:。我完全同意你的观点,迪帕克。。当然,这个论坛的目的是提供帮助,而不是劝阻正在学习的人。我不认为有任何错误的描述,所以我投了你一票,但你应该添加代码,这样其他人会找到更好的参考。我知道它是错误的数组,这就是它应该抛出错误的原因
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)
}