program story

Switch Case 문에서 중복 Const 선언 오류

inputbox 2020. 11. 22. 19:25
반응형

Switch Case 문에서 중복 Const 선언 오류


다음 코드가 있는데 'Duplicate Declaration query_url'오류가 발생합니다.

  switch(condition) {
    case 'complex':
      const query_url = `something`;
      break;
    default:
      const query_url = `something`;
      break;
  }

query_url이 옳지 않은 두 번 선언된다는 것을 이해합니다. 그러나 나는 이것을 해결하는 방법을 모른다. 누군가이 작업을 수행하는 올바른 방법이 무엇인지 도와 주시겠습니까?


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 문에 포함 된 외부 논리의 양에 따라 달라집니다!


switchreturn 문을 사용하여 함수에 넣으십시오 .

var condition;
function aSwitch(condition){
switch(condition) {
    case 'complex':
      return 'something';
    default:
      return 'something';
  }
}
const query_url = aSwitch(condition);

const query_url={
  complex:'something complex',
  other:'other thing'
}[condition]

단점은 객체에 기본값을 가질 수 없으며 조건에 대한 추가 확인이 필요하다는 것입니다.

참고 URL : https://stackoverflow.com/questions/35746371/error-duplicate-const-declaration-in-switch-case-statement

반응형