JavaScript switch语句输出undefined问题求助
问题分析与修复
原代码:
var code = prompt("enter a month number") var month_name; switch(code) { case 1: month_name = "January" break; case 4: month_name = "April" break; case 8: month_name = "August" break; default: "No match" } console.log(month_name)
运行后输出undefined的原因有两个:
- 类型不匹配:
prompt()返回的是字符串,而switch的case用的是数字(1、4、8),字符串和数字不会匹配,所以即使输入1、4、8,也会进入default分支。 - default分支未赋值:default里仅写了
"No match",没有给month_name赋值,month_name保持初始的undefined状态,最终输出undefined。
修复方案
方案1:将输入转为数字类型
var code = prompt("enter a month number") var month_name; // 把输入的字符串转为数字 var numCode = Number(code); switch(numCode) { case 1: month_name = "January"; break; case 4: month_name = "April"; break; case 8: month_name = "August"; break; default: month_name = "No match"; // 给month_name赋值 } console.log(month_name)
方案2:case使用字符串匹配
直接把case的数字改为字符串,匹配prompt返回的字符串类型:
var code = prompt("enter a month number") var month_name; switch(code) { case "1": month_name = "January"; break; case "4": month_name = "April"; break; case "8": month_name = "August"; break; default: month_name = "No match"; } console.log(month_name)
内容的提问来源于stack exchange,提问作者spmalks
相关产品推荐
相关产品推荐

