0

我想知道是否有一种更简洁的方法来编写这个 javascript 代码。ifif似乎相当平均。如果可能的话,很高兴使用es5/es6。基本上,我正在检查变量是否存在,如果它确实存在,我想确保 url 包含https并在不存在时更新它。

if (blogURL) {
  if (!/^https?:\/\//i.test(blogURL)) {
      var blogURL = 'http://' + blogURL;
  }
}
4

4 回答 4

3

用于&&在单个if语句中测试这两个条件并删除 var,因为您可能只想更新现有变量,而不是看起来您正在尝试定义新变量。

if (blogURL && !/^https?:\/\//i.test(blogURL)) {
     blogURL = 'http://' + blogURL;
}

这是有效的,因为如果第一个条件测试失败,则不会执行第二个条件测试。这是在 Javascript 中执行此类操作的常用方法。

于 2017-08-01T05:05:15.687 回答
0
if (blogURL && (!/^https?:\/\//i.test(blogURL)))
{
  var blogURL = 'http://' + blogURL;
}

将您的条件与 && 运算符结合起来。因为 && 是从左到右计算的,所以它只会在前一个为真时测试下一个条件。

于 2017-08-01T05:05:20.123 回答
0

总是可以做一个内联if语句:

var exist = blogURL != null ? !/^https?:\/\//i.test(blogURL) : false;

if(exist){

}

或者&&其他人推荐的。

于 2017-08-01T05:05:54.027 回答
0

这是一条最优化的整洁的解决方案:

blogURL = (blogURL && !blogURL.startsWith("https://")) ? ('http://' + blogURL) : blogURL;
于 2017-08-01T05:23:41.660 回答