在 javascript 中使用三元运算符而不是 if..else

Use Ternary operator instead of if..else in javascript

而不是 if...else 语句如何使用三元运算或任何替代方法来简化 javascript

中的代码
if(req.query.pr=="trans"){
    util.transUrl(req.originalUrl).then(param => {
      res.redirect(param);
    })
  }
  else if(req.query.pr=="inst"){
    util.instaUrl(req.originalUrl).then(param => {
      res.redirect(param);
    })
  }
  else{
    res.status(400).send("Contact the editor of the originating page.")
  }

在JS中有多种写条件语句的方法。但是,如果有多个语句,我会说你应该坚持 if else if else。但是,如果您想查看其他方法,请看这里:

Using Ternary operator ? :

const {pr} = req.query
pr === 'trans'
? util.transUrl(req.originalUrl).then(param => 
      res.redirect(param)
  )
: pr === 'inst'
? util.instaUrl(req.originalUrl).then(param => 
      res.redirect(param)
  )
: res.status(400).send('Contact the editor of the originating page.')

Using Gate logic && ||

const {pr} = req.query
(pr === 'trans' && 
    util.transUrl(req.originalUrl).then(param => 
        res.redirect(param))
) ||
(pr=== 'inst' && 
    util.instaUrl(req.originalUrl).then(param => 
        res.redirect(param))
) || 
res.status(400).send('Contact the editor of the originating page.')

现在,查看您的代码,此处 if 和 else if 语句相似。所以你可以避免 else if 使用像这样的三元运算符:

const {pr} = req.query
if(pr === 'trans' || pr === 'inst'){
    util[pr === 'trans' ? 'transUrl' : 'instaUrl'](req.originalUrl)
    .then(param => res.redirect(param))
}
else{
    res.status(400).send('Contact the editor of the originating page.')
}

仅供参考请考虑在比较字符串时使用 === 而不是 == 并且不需要强制.