다음 코드가 있는데 ‘Duplicate Declaration query_url’오류가 발생합니다.
switch(condition) {
case 'complex':
const query_url = `something`;
break;
default:
const query_url = `something`;
break;
}
query_url이 옳지 않은 두 번 선언된다는 것을 이해합니다. 그러나 나는 이것을 해결하는 방법을 모른다. 누군가이 작업을 수행하는 올바른 방법이 무엇인지 도와 주시겠습니까?
답변
각 경우에 동일한 변수를 다시 선언해야하는 경우 @Bergi의 답변을 참조하십시오.
query_url
스위치 브랜치에 따라 여러 값을 가질 수 있다면 분명히 변수가 필요합니다 ( var
또는로 선언하십시오 let
).
const는 한 번 설정되고 그대로 유지됩니다.
let을 사용한 예제 사용
let query_url = '';
switch(condition) {
case 'complex':
query_url = `something`;
break;
default:
query_url = `something`;
break;
}
답변
케이스를 블록으로 포장 해보십시오.
switch(condition) {
case 'complex': {
const query_url = `something`;
… // do something
break;
}
default: {
const query_url = `something`;
… // do something else
break;
}
}
답변
나는 이러한 종류의 경우에 개인적으로 다음을 선호하고 남용하는 경향이 있습니다.
const query_url = (()=>
{
switch(condition)
case 'complex': return 'something';
default : return 'something-else';
})();
(이를 위해서는 ES6가 필요하거나 Node 4.x에서 “use-strict”를 선언해야합니다)
업데이트 : 또는 논리가 있는지 또는 간단한 할당인지에 따라 훨씬 더 간결합니다.
const query_url = {complex : 'something'}[condition] || 'something-else';
또한 물론 해당 switch 문에 포함 된 외부 논리의 양에 따라 달라집니다!
답변
const query_url={
complex:'something complex',
other:'other thing'
}[condition]
단점은 객체에 기본값을 가질 수 없으며 조건에 대한 추가 확인이 필요하다는 것입니다.
답변
{}
스위치 케이스의 범위 를 지정하는 데 사용할 수 있습니다 .
귀하의 경우 에는 var가 존재하고 중괄호 사이에서 액세스 할 수있는 한 변수를 반환해야합니다.
switch(condition) {
case 'complex': {
const query_url = `something`;
return query_url;
}
default: {
const query_url = `something`;
return query_url;
}
}
사용하지 않을 경우return
let query_url
스위치 문 위에 선언해야합니다 .
답변
switch
return 문을 사용하여 함수에 넣으십시오 .
var condition;
function aSwitch(condition){
switch(condition) {
case 'complex':
return 'something';
default:
return 'something';
}
}
const query_url = aSwitch(condition);