我有一个包含多个 if 语句的旧代码,并且在每个语句上我都需要获取 HTTP 状态代码。像这样的东西:
if (x == 1) {
const { statusCode } = await request(httpUrl...)
...
}
else if (x == 2) {
const { statusCode } = await request (aDifferentHttpUrl...)
...
}
// and other if's
我想将其重构为 switch-case 语句,以便对未来的我和其他人更具可读性。但后来我意识到我不能像在多个 if 语句中那样多次“const { statusCode }”,并且我无法将 const 声明移动到 switch-case 之外,因为 URL 根据 x 的值而变化。
是否有正确的方法来使用我不知道的同一变量的解构? 重要的是要注意我对 javascript 还比较陌生
我尝试将每个 if 内的代码复制粘贴到 switch 中对应的情况。我想做一些类似的事情:
switch (x) {
case 1:
{ statusCode } = await request(http)
...
break
case 2:
{ statusCode } = await request(anotherHttp)
...
break
case ...
}
所以我不需要为每种情况声明整个响应对象
编辑:代码拼写错误
您可以将案例包装在块语句中,以使每个案例都有一个本地范围。
switch (expression) {
case 1: {
const { statusCode } = await request(http)
/* ... */
}
break
case 2: {
const { statusCode } = await request(anotherHttp)
/* ... */
}
break
/* ... */
}