如何解决JavaScript用switch实现daysInMonth函数的报错问题
问题原因
- 入参与分支匹配类型不一致:你的代码中switch的case值全部为字符串类型(如
'1'、'2'),但需求明确要求入参是整数类型的1~12。JavaScript的switch采用严格相等(===)做匹配判定,整数1和字符串'1'判定结果为不相等,因此所有合法整数入参都会进入default分支,返回错误提示。 - 返回值类型不符合要求:你当前返回的天数为字符串格式(如
'31'),需求要求返回数字类型的对应天数。
修正后代码
function daysInMonth(month) { switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: return 28; case 4: case 6: case 9: case 11: return 30; default: return 'You have to put a month from 1 to 12'; } } // 测试示例 const result1 = daysInMonth(1); // 返回31 const result2 = daysInMonth(6); // 返回30 const result3 = daysInMonth(2); // 返回28
修正后代码将case值改为数字类型,同时返回值也调整为数字类型,即可符合测试用例要求。
内容的提问来源于stack exchange,提问作者Ana Modesto
相关产品推荐
相关产品推荐

