2016-08-21 1 views
3

내 코드에서 내가 뭘 잘못하고 있는지 궁금합니다.스위치 문에서 휴식을 사용하면 연결할 수없는 코드 오류가 발생합니다.

switch (action.type) { 
    case TYPES.ADD_TO_FAVORITES: 
     if (state.faves.length <= 10) { 
     return assign({}, state, { 
      faves: state.faves.concat(action.payload), 
      full: false 
     }); 
     } else { 
     return assign({}, state, { 
      faves: state.faves, 
      full: true 
     }); 
     } 
    default: 
     return state; 
    } 

내 린터가 default 경우 전에 휴식을 추가 말합니다,하지만 난 그렇게 할 때, 그것은 unreachable code을 말한다 : 나는 다음을 수행하려합니다.

+0

스위치 설명에서 돌아 오지 마십시오. –

+0

@TinyGiant 왜 안 되니? – 1252748

답변

1

returnbreak의 역할을합니다. 둘 다 사용할 필요가 없습니다. 도달 할 수없는 코드가 있다는 메시지를 받으면 거기에 아무런 의미가 없거나 이전에 논리적으로 순서가 잘못되어있는 것입니다. switch 문에서

+0

아. 나는 redux를 배우려고 노력하고 있습니다. 내 faves 목록에 이미 10 가지가 있는지 확인하는 더 좋은 방법은 무엇이며, 10 개 미만인 경우 fave 만 추가하면됩니까? – user6701863

0

반환아무 의미을 허용하지합니다. 이고 기능은입니다. switch 문에서 값을 되찾고 싶다면. 그냥이

var result; 
switch (action.type) { 
    case TYPES.ADD_TO_FAVORITES: 
     if (state.faves.length <= 10) { 
      result = assign({}, state, { 
       faves: state.faves.concat(action.payload), 
       full: false 
      }); 
     } else { 
      result = assign({}, state, { 
       faves: state.faves, 
       full: true 
      }); 
     } 
     break; 
    default: 
     result = state; 
     break; 
} 
+0

나는 redux를 배우고 있으며 그들은 스위치를 사용하고 있습니다 :(여기에 한 예가 있습니다 : http://onehungrymind.com/build-better-angular-2-application-redux-ngrx/ – user6701863

+0

나는 이제 무엇이 형편 없는가? 하지만 바닐라 자바 ​​스크립트에 대한 모든 정보를 제공 할 때만이 답변을 얻을 수 있습니다. – KmasterYC

0
switch (action.type) { 
case TYPES.ADD_TO_FAVORITES: 
    if (state.faves.length <= 10) { 
    return ...; 
    } else { 
    return ...; 
    } 
    break; // YOU HAVE ADDED BREAK HERE 
default: 
    return state; 
} 
case TYPES.ADD_TO_FAVORITES 내부

, 하나 if 또는 else이 실행됩니다 같은 변수에 할당합니다. if와 else과 같이 객체를 반환 한 경우 default 직전에 추가 한 break은 결코 실행되지 않습니다!

그래서 그것이 unreachable code라고 말합니다.

1

린터 규칙, 즉 '스플린트 없음'은 대소 문자가 실수로 넘어가는 것을 허용하지 않습니다.

중단, 반환 등이 발생하지 않는 한 중단 코드 실행없이 의미는 대소 문자를 구분하지 않고 계속됩니다.

때로는이를 필요하지만 의도하지 않은 오류가 발생할 수 있으며이 규칙은이를 방지하려고 시도합니다.

규칙을 사용하지 않도록 설정하거나 경고로 구성 할 수 있습니다. 반환 값과 함수의 끝 부분에 변수를 할당하고 규칙을 비활성화하지 않고 반환하는 것이 좋습니다.

그리고 도달 할 수없는 부분에 대해, 당신은 당신의 경우 다른 블록에서 반환하는

function() { 
var returnvalue; 
Switch(variableA) { 
    Case 1: 
     returnvalue = somevalue; 
     break; 
    case 2: 
     returnvalue = some other value; 
     break; 
    default: 
     returnvalue= default value; 
    } 
return returnvalue; 

}.

따라서 중단은 실행될 기회가 없습니다.

관련 문제