Javascript SWITCH语句在使用相同的IF语句时不工作(Java脚本)

Javascript SWITCH语句在使用相同的IF语句时不工作(Java脚本),javascript,function,if-statement,switch-statement,Javascript,Function,If Statement,Switch Statement,我写了一个简短的程序,将数字转换成罗马数字。它包含两个非常相似的switch语句,其中一个运行良好,另一个(在代码段中注释掉)运行不正常。控制台记录“错误”消息,表明函数的参数“e”不知何故未到达开关。 然而,当我用“if”代替开关时,它就可以工作了。那里发生了什么事 提前谢谢 //d-正在转换的数字 //电子数字在数字中的位置(对不起,不知道英语中的正确术语) 函数转换器(num){ var convert=函数(d,e){ var a=“”; var b=''; var c=“”; /*

我写了一个简短的程序,将数字转换成罗马数字。它包含两个非常相似的switch语句,其中一个运行良好,另一个(在代码段中注释掉)运行不正常。控制台记录“错误”消息,表明函数的参数“e”不知何故未到达开关。
然而,当我用“if”代替开关时,它就可以工作了。那里发生了什么事

提前谢谢

//d-正在转换的数字
//电子数字在数字中的位置(对不起,不知道英语中的正确术语)
函数转换器(num){
var convert=函数(d,e){
var a=“”;
var b='';
var c=“”;
/* 
开关(e){
案例“1”:a='I';b='V';c='X';break;
案例“2”:a='X';b='L';c='c';break;
案例“3”:a='C';b='D';C='M';break;
案例“4”:a='M';break;
默认值:console.log('error')}
*/
如果(e==1){a='I';b='V';c='X';}
如果(e==2){a='X';b='L';c='c';}
如果(e==3){a='C';b='D';C='M';}
如果(e==4){a='M';}
else{console.log('error')}
var s='';
开关(d){
案例“0”:s='';中断;
案例“1”:s=a;中断;
案例“2”:s=a+a;中断;
案例“3”:s=a+a+a;中断;
案例“4”:s=a+b;中断;
案例“5”:s=b;中断;
案例“6”:s=b+a;中断;
案例“7”:s=b+a+a;中断;
案例“8”:s=b+a+a+a;中断;
案例“9”:s=a+c;中断;
默认值:s='#';break;}
返回s;
};
arr=字符串(num).split(“”);
对于(i=arr.length-1;i>=0;i--){
var e=arr.length-i;
arr[i]=转换(arr[i],e);
}
返回arr.join(“”);
}

转炉阿曼(501)
当您调用
convert
时,您将为d传递一个
char
,为e传递一个
num
,因此注释的switch语句将需要使用数字,而不是字符,这基本上就是您使用if、else if、else替换时所做的操作。

尝试将您的案例设置为使用数字而不是字符,如果有人能证实:我认为switch语句对switch使用了严格的比较(
==
vs
===
),看看if语句中的数字是如何为您工作的,我认为这可能会解决您的问题答案相当明显。您正在比较switch语句中的字符串和if/else语句中的整数。就是这样。谢谢