2017-01-09 1 views
1
을 반환합니다.

내 응용 프로그램에서 날짜 형식에 대한 여러 조건을 처리하고이 목적으로 전환하는 방법을 사용하려고합니다. 이 함수는 잘 보이지만, 문제는 내 케이스의 조건에서 아무 것도 작동하지 않는다는 것입니다. 나는 조건에 문제가 있다는 것을 이해하지만 정확히 무엇을 이해할 수는 없습니다.스위치 메서드는 기본값 인

아무도 내 실수가 어디 있는지 말할 수 있습니까? 이것은 당신이 실제로 사용해야하는 것입니다 -

var dateSettings = function (value) { 

     var timezone = localStorage.getItem('timezone'); 
     timezone = JSON.parse(timezone); 

     var timeFormat = localStorage.getItem('timeFormat'); 
     timeFormat = JSON.parse(timeFormat); 

     var dateFormat = localStorage.getItem('dateFormat'); 
     dateFormat = JSON.parse(dateFormat); 

     switch(value) { 
      case (timezone === true && timeFormat === true && dateFormat === false): 
       return value = moment.utc(value).format('MMM dd, yyyy HH:mm'); 

      case (timezone === true && timeFormat === false && dateFormat === false): 
       return value = moment.utc(value).format('MMM dd, yyyy HH:mm:ss'); 

      case (timezone === false && timeFormat === false && dateFormat === false): 
       return value = moment(value).format('MMM dd, yyyy HH:mm:ss'); 

      case (timezone === false && timeFormat === false && dateFormat === true): 
       return value = moment(value).format('YYYY-MM-DD HH:mm:ss'); 

      case (timezone === false && timeFormat === true && dateFormat === true): 
       return value = moment(value).format('YYYY-MM-DD HH:mm'); 

      case (timezone === true && timeFormat === false && dateFormat === true): 
       return value = moment.utc(value).format('YYYY-MM-DD HH:mm:ss'); 

      default: 
       return value = moment.utc(value).format('YYYY-MM-DD HH:mm'); 
     } 
    }; 
+0

당신은 그런 식 스위치 케이스를 사용하지 않아야합니다 .... 당신이 검사를하기 위하여려고하는 경우에, if/else if/else ....를 사용하십시오. – epascarello

답변

2

switch-caseif-else 문장과 동일하지 않습니다.

casevalue에만 의존해야합니다.

http://www.w3schools.com/js/js_switch.asp

function switchCase(expression) { 
 

 
    switch(expression) { 
 
     case "a": 
 
      console.log("This is an A"); 
 
      break; 
 
     case "b": 
 
      console.log("This is a B"); 
 
      break; 
 
     default: 
 
      console.log("DEFAULT"); 
 
    } 
 
} 
 

 
switchCase("a") 
 
switchCase("banana")
은 또한 당신이 내 눈에 좋은 스타일이 아닌 할당 return value = ...를 반환 :

이에서보세요.

더 나은 할 : 나는 그것을 할 것

value = 4; 
return value; 

이 샘플 방법 :

var dateSettings = function(value) { 

    var timezone = localStorage.getItem('timezone'); 
    timezone = JSON.parse(timezone); 

    var timeFormat = localStorage.getItem('timeFormat'); 
    timeFormat = JSON.parse(timeFormat); 

    var dateFormat = localStorage.getItem('dateFormat'); 
    dateFormat = JSON.parse(dateFormat); 

    if (timezone === true && timeFormat === true && dateFormat === false) { 
     value = moment.utc(value).format('MMM dd, yyyy HH:mm'); 
    } else if (timezone === true && timeFormat === false && dateFormat === false) { 
     value = moment.utc(value).format('MMM dd, yyyy HH:mm:ss'); 
    } else if (timezone === false && timeFormat === false && dateFormat === false) { 
     value = moment(value).format('MMM dd, yyyy HH:mm:ss'); 
    } else if (timezone === false && timeFormat === false && dateFormat === true) { 
     value = moment(value).format('YYYY-MM-DD HH:mm:ss'); 
    } else if (timezone === false && timeFormat === true && dateFormat === true) { 
     value = moment(value).format('YYYY-MM-DD HH:mm'); 
    } else if (timezone === true && timeFormat === false && dateFormat === true) { 
     value = moment.utc(value).format('YYYY-MM-DD HH:mm:ss'); 
    } else { 
     value = moment.utc(value).format('YYYY-MM-DD HH:mm'); 
    } 
    return value; 
}; 
+0

그래, 잘 작동합니다. 나는이 문장을 스위치 방법 – antonyboom

+0

으로 바꿀 수 있다고 생각했습니다. 할 수 있습니다. 그것은 약간 이상합니다 :'switch (true) {case (test1) : expr1; 단절; case (test2) : expr2; 단절; ... '. http://stackoverflow.com/questions/14118996/is-switchtrue-valid-javascript –

+0

@ScottSauyet을 참조하십시오. 멋지지만,이 사실을 알지 못했지만 드문 일입니다. – ppasler

관련 문제