Использование return как одного из нескольких операторов в троичном выражении

У меня есть этот код:

  err ? (reject(err), return)
      : resolve(db)

Что возвращает:

SyntaxError: Неожиданный возврат токена

Однако это работает:

err ? (reject(err), console.log('test'))
    : resolve(db)

Почему этот возврат нельзя использовать в этой ситуации? Есть ли другая альтернатива остановке выполнения функции при использовании тернарного оператора для нескольких операторов?


person Kunok    schedule 06.10.2016    source источник
comment
у вас могут быть только выражения. return не является частью выражения   -  person murli2308    schedule 06.10.2016


Ответы (2)


Это троичное выражение, выражение в целом должно возвращать значение и, таким образом, содержать только выражения.

Вы также не можете сказать a = 1 + return;.

Есть ли другая альтернатива остановке выполнения функции при использовании тернарного оператора для нескольких операторов?

Заявление if...

if (err) { reject(err); return }

resolve(db);
person RemcoGerlich    schedule 06.10.2016
comment
О, я вижу, теперь я понимаю. - person Kunok; 06.10.2016

err ? (reject(err), return)
    : resolve(db)

Есть ли другая альтернатива остановке выполнения функции при использовании тернарного оператора для нескольких операторов?

Тернарные операторы не похожи на if else в том смысле, что включают неявный оператор return. Таким образом, чтобы вернуться как можно скорее после выполнения условия, вы можете правильно сделать следующее.

return err ? reject(err)
           : resolve(db);
person Redu    schedule 06.10.2016
comment
Мне нужно только вернуть, если ошибка верна - person Kunok; 06.10.2016