这两个是相同的,还是比另一个更好/更安全?

时间:2012-11-24 04:41:40

标签: javascript null ternary-operator logical-operators

我担心对match用户输入字符串进行细化会导致错误,因为match使用设置了g标志的正则表达式并且没有匹配字符串将返回null,这是无法确定的。

所以我留下了以下两个选项,据我所知,它们是完全相同的。但我只是想确保我理解它。

    var tldMatcher = /[^.]+\.?$/g
      , tld = str.match(tldMatcher) ? str.match(tldMatcher)[0] : null;

...和...

    var tldMatcher = /[^.]+\.?$/g
      , tld = str.match(tldMatcher) && str.match(tldMatcher)[0];

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

当我将|| [].match一起使用时,我个人总是使用g。那就是:

var matches = str.match(/regex/g) || [];

这确保matches始终是一个字符串数组(但可能是空的)。在你的情况下,它可以这样做:

var tldMatcher = /[^.]+\.?$/g
  , tld = (str.match(tldMatcher) || [])[0];