javascript - 这两者是否相同,或者其中一个比另一个更好/更安全?

标签 javascript null ternary-operator logical-operators

我担心对用户输入字符串的匹配进行细化会导致错误,因为与具有的正则表达式进行匹配 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];

有什么想法吗?

最佳答案

我个人总是使用|| [] 当我将 .matchg 一起使用时。即:

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

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

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

关于javascript - 这两者是否相同,或者其中一个比另一个更好/更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538334/

相关文章:

java - 为什么我的 Spring @Autowired 字段为空?

python - python 的 if/else 一个线性参数替换的具体情况

javascript - 无法从自定义对话框获取文本区域值

javascript - Node.js:获取 "From: "和 "To: "的正则表达式

javascript - 仅从 gcloud 数据存储区的对象数组中获取选定的对象

asp.net - 将参数中的 NULL 传递给存储过程中的 DateTime 字段

asp.net-mvc - 为什么@Model 为空?

javascript - 如何阻止浏览器存储 Blob?

javascript - Vuejs 三元运算符/条件在 v-bind-style 中不起作用

Swift 三元语法错误