当我使用以下代码:为什么一个空结果会冻结脚本以及如何避免它?
if(string.match(/td>0/g).length == 8) {
/*Do something*/
}
和没有/td>0/
是匹配的,它返回一个null
结果,防止下面的脚本的执行。
我想知道为什么代码是冻结的,以及如何避免它,并找到一个解决方案或替代.match()
?
当我使用以下代码:为什么一个空结果会冻结脚本以及如何避免它?
if(string.match(/td>0/g).length == 8) {
/*Do something*/
}
和没有/td>0/
是匹配的,它返回一个null
结果,防止下面的脚本的执行。
我想知道为什么代码是冻结的,以及如何避免它,并找到一个解决方案或替代.match()
?
试试这个(以上推荐):
var matching=string.match(/td>0/g);
if(matching != null && matching.length === 8) {
/*Do something*/
}
使用===
而不是==
。
这个答案可以改进,所以你没有运行正则表达式检查两次。但是如果你喜欢代码运行两次,这是你的答案。 – epascarello
你可以简单地先添加一个null
检查 -
if(string.match(/td>0/g) != null && string.match(/td>0/g).length == 8) {
/*Do something*/
}
您将需要在检查长度之前进行空检查。我会做任一第一执行匹配和比检查
var result = string.match(/td>0/g);
if (result && result.length) {}
或使用或赶上空
if((string.match(/td>0/g)||"").length) {}
或'如果((string.match(/ TD> 0 /克)|| [])。length === 8)',另外,控制台可以用F12 – adeneo
Thks打开所有你的答案和如此快速的回应:) –