2016-02-05 70 views
0

当我使用以下代码:为什么一个空结果会冻结脚本以及如何避免它?

if(string.match(/td>0/g).length == 8) { 
    /*Do something*/ 
} 

和没有/td>0/是匹配的,它返回一个null结果,防止下面的脚本的执行。

我想知道为什么代码是冻结的,以及如何避免它,并找到一个解决方案或替代.match()

+3

或'如果((string.match(/ TD> 0 /克)|| [])。length === 8)',另外,控制台可以用F12 – adeneo

+0

Thks打开所有你的答案和如此快速的回应:) –

回答

1

试试这个(以上推荐):

var matching=string.match(/td>0/g); 
if(matching != null && matching.length === 8) { 
    /*Do something*/ 
} 

使用===而不是==

+1

这个答案可以改进,所以你没有运行正则表达式检查两次。但是如果你喜欢代码运行两次,这是你的答案。 – epascarello

2

你可以简单地先添加一个null检查 -

if(string.match(/td>0/g) != null && string.match(/td>0/g).length == 8) { 
    /*Do something*/ 
} 
1

您将需要在检查长度之前进行空检查。我会做任一第一执行匹配和比检查

var result = string.match(/td>0/g); 
if (result && result.length) {} 

或使用或赶上空

if((string.match(/td>0/g)||"").length) {} 
相关问题