В JavaScript нет соответствия шаблону, о котором вы, вероятно, говорите.Существует активное предложение , чтобы добавить его с помощью case
/ when
, вот пример из этого предложения:
const res = await fetch(jsonService)
case (res) {
when {status: 200, headers: {'Content-Length': s}} -> {
console.log(`size is ${s}`)
}
when {status: 404} -> {
console.log('JSON not found')
}
when {status} if (status >= 400) -> {
throw new RequestError(res)
}
}
В настоящее время оно находится только на этапе 1 из процесс , тем не менее, может не продолжаться, может радикально измениться, прежде чем продолжить, и может потребоваться годы, чтобы проработать этапы и перейти на язык.Есть работа над плагином Babel .
Боюсь, мне не сразу понятно, как бы я применил его к вашему примеру, хотя, как мне кажется, нужен операнд для case
.
Тем временем, серия if
/ else if
может быть довольно краткой, если краткость - то, что вы ищете:
if (a === 1 && !b) foo(y);
else if (a) foo(x);
else if (b === 3 && c === 2) foo(z);
или JavaScript switch
необычно гибок (на самом деле это просто еще один способ написать if
/ else if
):
switch (true) {
case a === 1 && !b: foo(y); break;
case a: foo(x); break;
case b === 3 && c === 2: foo(z); break;
}
(я не защищаю это, просто указываю, что это вариант.)