JavaScript代码输出异常求助:预期输出'open'却显示'invalid day'
问题排查与修复
核心问题:参数传递不匹配
你的函数workingHours定义时只接受一个参数input,但调用时传了两个独立参数"11"和"Tuesday"。这会导致:input实际等于第一个参数"11"(字符串类型)input[0]是字符串的第一个字符"1",转成数字后为1input[1]是字符串的第二个字符"1",所以day的值是"1",完全不匹配任何日期选项,最终触发invalid day分支
修复方案二选一
方案1:修改函数调用,将参数打包成数组传入
workingHours(["11", "Tuesday"])方案2:修改函数定义,直接接收两个独立参数(更符合直观调用逻辑)
function workingHours(hourStr, day) { let hour = Number(hourStr); if (day == "Monday" || day == "Tuesday" || day == "Wednesday" || day == "Thursday" || day == "Friday" || day == "Saturday") { if (hour >= 10 && hour <= 18) { console.log("open"); } else if (hour < 10 || hour >= 19) { console.log("closed"); } else { console.log("invalid hour"); } } else if (day == "Sunday") { if (hour <= 23 && hour >= 0) { console.log("closed"); } else { console.log("invalid hour"); } } else { console.log("invalid day"); } } workingHours("11", "Tuesday") // 现在可正常输出open额外优化建议
可以把日期判断改成数组包含检查,让代码更简洁:const workDays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; if (workDays.includes(day)) { // 原工作日逻辑 }
内容的提问来源于stack exchange,提问作者Bojidar Kaloyanov
相关产品推荐
相关产品推荐

