Jquery 未定义是否导致或操作中的下一项?
我一直认为获取未定义值的一个退路是添加一个0作为第二个元素的析取运算符。也许一个例子更清楚: 这是一个例子 我希望上面返回的时间Jquery 未定义是否导致或操作中的下一项?,jquery,regex,match,string-length,Jquery,Regex,Match,String Length,我一直认为获取未定义值的一个退路是添加一个0作为第二个元素的析取运算符。也许一个例子更清楚: 这是一个例子 我希望上面返回的时间a是在textarea中找到的,如果找不到它(并且长度返回未定义),则跳到OR语句的第二部分,即0。但正如你所见,这是行不通的。控制台返回: 未捕获的TypeError:无法读取null的属性“length” 因此,长度不是未定义的,而是抛出一个错误。我怎样才能最好地处理这件事。如果没有匹配项,如何使其返回0?如果没有找到匹配项,则返回null。因此,当您在文本区域中键
a
是在textarea中找到的,如果找不到它(并且长度返回未定义),则跳到OR语句的第二部分,即0
。但正如你所见,这是行不通的。控制台返回:
未捕获的TypeError:无法读取null的属性“length”
因此,长度不是未定义的,而是抛出一个错误。我怎样才能最好地处理这件事。如果没有匹配项,如何使其返回0
?如果没有找到匹配项,则返回null
。因此,当您在文本区域中键入不包含a
的内容时,match()
将返回null
。并且null。长度为错误
返回值
包含匹配结果的数组,如果没有匹配项,则为null
演示
$(“textarea”)。在(“输入”,函数()上{
console.log($((“textarea”).val().match(/a/g)| |[]).length);
});代码>
好吧,如果.match
的结果为null
,不要尝试获取其长度
var matches = $("textarea").val().match(/a/g);
var nummatches = matches && matches.length || 0;
您现在可以删除|| 0
“”)。长度
比创建新的空数组更有效吗?| | 0
部分现在是多余的。谢谢Tushar。我想知道@nnnnnn的评论是否属实。在我看来他是对的。@BramVanroy nnnnnn我还补充了这一点
var matches = $("textarea").val().match(/a/g);
var nummatches = matches && matches.length || 0;