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

问题描述 投票:0回答:1

而不是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.")
  }
javascript if-statement ternary-operator
1个回答
2
投票

在JS中编写条件语句有多种方法。但是,如果有多个陈述我会说你应该坚持if else if else。但是如果你想看到其他方法,那么它们是:

使用三元运算符? :

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.')

使用门逻辑&& ||

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.')
}

只有一个FYI:无论何时比较字符串而且不需要强制,请考虑使用===而不是==

© www.soinside.com 2019 - 2024. All rights reserved.