Используйте тернарный оператор вместо if..else в javascript - PullRequest
0 голосов
/ 26 апреля 2019

Вместо оператора 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.")
  }

1 Ответ

2 голосов
/ 26 апреля 2019

Существует несколько способов написания условного оператора в 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 : Пожалуйста, рассмотрите возможность использования === вместо == всякий раз, когда вы сравниваете строки и нет необходимости принуждения.

...