2017-08-25 93 views
-2
getDateRange = function() { 
     date = new Date(); 
     var test; 
     selectedOption = $('#daterange').change().val() 
     console.log(selectedOption) // reusult 0 
     switch (selectedOption) { 
      case 0: 
       test = '/' + date.getFullYear() + '-' + 0 + date.getMonth() + '-' + date.getDate() + '/' + date.getFullYear() + '-' + 0 + (date.getMonth() + 1) + '-' + date.getDate() 
       break 
     } 
     return test 
    } 
    console.log($('#daterange').change().val()) // result 0 
    console.log(getDateRange()) // result "undefined". Why? 

为什么switch语句的结果总是undefinedJavaScript switch语句混淆

+1

为什么如果只有1个案例需要'switch'? :( – Dekel

回答

2

更改你的case语句来case '0'因为val()返回一个字符串。

另外:如果除了返回测试变量之外,您在switch语句之后没有做其他任何事情,那么您也可以仅返回值并摆脱var test

getDateRange = function() { 
 
    date = new Date(); 
 
    selectedOption = $('#daterange').change().val(); 
 
    switch (selectedOption) { 
 
    case '0': 
 
     return '/' + date.getFullYear() + '-' + 0 + date.getMonth() + '-' + date.getDate() + '/' + date.getFullYear() + '-' + 0 + (date.getMonth() + 1) + '-' + date.getDate(); 
 
    } 
 
} 
 
console.log(getDateRange());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="daterange" value="0" />

+1

或'case'0':'为什么要浪费时间解析? – Barmar

+0

好点t,改变了我的回答 – lumio

+0

另外,如果你想快速地将一个字符串转换为一个数字等价物,你可以简单地在字符串前加一个加号。酸当量+'0'=== 0 – zfrisch

1

$('#daterange').change().val()返回一个字符串,但在开关中,您将与一个数字进行比较。

而且,在当前的例子中,你不需要切换,因为你只有一种情况:

getDateRange = function() { 
    var selectedOption = $('#daterange').change().val(); 
    if (selectedOption === '0') { 
     return ... 
    } 
} 
+1

为什么'开关',当你只有1个情况?:( – Dekel

+1

@Dekel,是不是OP的问题? – trincot

+1

即使问题是关于开关 - 你应该给一个更好的答案,基于你看到的代码 – Dekel

0

我的JavaScript的,数据类型应该是tighly配对您对比operatot,所以它与===

比较在这种情况下,类型和数据都将匹配在一起。

getDateRange = function() { 
    date = new Date(); 
    selectedOption = $('#daterange').change().val(); 
    switch (selectedOption) { 
    case '0': 
     return '/' + date.getFullYear() + '-' + 0 + date.getMonth() + '-' + date.getDate() + '/' + date.getFullYear() + '-' + 0 + (date.getMonth() + 1) + '-' + date.getDate(); 
    } 
} 
console.log(getDateRange());