Javascript Js中的Switch语句

Javascript Js中的Switch语句,javascript,switch-statement,Javascript,Switch Statement,我刚刚了解了switch语句,我一直在尝试它。我对此有一些问题。首先,我想谈谈我试过但没用的东西。我不知道为什么它不工作,特别是因为它不会在控制台日志中引起任何错误消息。这是: var currnc=“” var rngab=Math.floor(Math.random()*10)+1; 开关(rngab){ 案例“1”: currnc=“日元”; 打破 案例“2”: currenc=“美元”; 打破 案例“3”: currnc=“比索”; 打破 案例“4”: currnc=“磅”; 打破

我刚刚了解了switch语句,我一直在尝试它。我对此有一些问题。首先,我想谈谈我试过但没用的东西。我不知道为什么它不工作,特别是因为它不会在控制台日志中引起任何错误消息。这是:

var currnc=“” var rngab=Math.floor(Math.random()*10)+1; 开关(rngab){ 案例“1”: currnc=“日元”; 打破 案例“2”: currenc=“美元”; 打破 案例“3”: currnc=“比索”; 打破 案例“4”: currnc=“磅”; 打破 案例“5”: currnc=“玻利瓦尔”; 打破 案例“6”: currnc=“卢比”; 打破 案例“7”: currnc=“欧元”; 打破 案例“8”: currnc=“比特币”; 打破 案例“9”: currnc=“垄断货币”; 打破 案例“10”: currnc=“你没有钱!”; 打破 违约: currnc=“你搞砸了。”; } document.getElementById(“goonga”).innerHTML=currenc;
您从
数学楼层
获取数字,但您使用字符串作为
大小写

也可以使用
.textContent
而不是
.innerHTML
仅使用innerHTML更改div的文本

阅读有关MDN上
.textContent
的更多信息

运行下面的代码段以查看它是否正常工作

var currnc=“”
//作用
函数someFunction(){
var rngab=Math.floor(Math.random()*10)+1;
开关(rngab){
案例1:
currnc=“日元”;
打破
案例2:
currenc=“美元”;
打破
案例3:
currnc=“比索”;
打破
案例4:
currnc=“磅”;
打破
案例5:
currnc=“玻利瓦尔”;
打破
案例6:
currnc=“卢比”;
打破
案例7:
currnc=“欧元”;
打破
案例8:
currnc=“比特币”;
打破
案例9:
currnc=“垄断货币”;
打破
案例10:
currnc=“你没有钱!”;
打破
违约:
currnc=“你搞砸了。”;
}
}
//调用该函数
someFunction()
document.getElementById(“goonga”).textContent=currenc
*{
背景#f2b6;
}

实际上,随机生成器返回的是一个整数,您使用的是字符串。 因此,将数字转换为字符串或将案例更改为数字

var currnc=“” var rngab=Math.floor(Math.random()*10)+1; 开关(rngab.toString()){ 案例“1”: currnc=“日元”; 打破 案例“2”: currenc=“美元”; 打破 案例“3”: currnc=“比索”; 打破 案例“4”: currnc=“磅”; 打破 案例“5”: currnc=“玻利瓦尔”; 打破 案例“6”: currnc=“卢比”; 打破 案例“7”: currnc=“欧元”; 打破 案例“8”: currnc=“比特币”; 打破 案例“9”: currnc=“垄断货币”; 打破 案例“10”: currnc=“你没有钱!”; 打破 违约: currnc=“你搞砸了。”; } document.getElementById(“goonga”).innerHTML=currenc;
switch语句首先计算其表达式。然后,它查找第一个case子句,该子句的表达式的计算结果与输入表达式的结果相同(使用严格比较,==),并将控制转移到该子句,执行相关语句。(如果多个事例与提供的值匹配,则选择匹配的第一个事例,即使事例彼此不相等。)

更多关于

var currnc=“” var rngab=Math.floor(Math.random()*10)+1; 开关(rngab){ 案例1: currnc=“日元”; 打破 案例2: currenc=“美元”; 打破 案例3: currnc=“比索”; 打破 案例4: currnc=“磅”; 打破 案例5: currnc=“玻利瓦尔”; 打破 案例6: currnc=“卢比”; 打破 案例7: currnc=“欧元”; 打破 案例8: currnc=“比特币”; 打破 案例9: currnc=“垄断货币”; 打破 案例10: currnc=“你没有钱!”; 打破 违约: currnc=“你搞砸了。”; } document.getElementById(“goonga”).innerHTML=currenc;
rngab
是一个数字……您的案例就是字符串。删除数字案例中的引号,可能会起作用(或发现新的错误),因为在许多情况下,hashmap对象会更干净,更易于维护
rngab
是数字,如果将其更改为字符串,它会起作用。不要忘了投票并接受我的答案作为解决方案,如果这解决了您的问题?。谢谢–问题是,我已经对另一个做了同样的事情,这里的“默认”案例永远不会执行对吗?那么,它是否被视为死代码并被删除?原谅我ignorance@Santa如果两种情况都不符合其条件-“是”,则将执行默认设置。在任何
if
条件下,它都像最后一个
else
一样工作。明白了,但在这种特定情况下,它总是属于“案例1到案例10”的范围,对吗?我们还必须保留“默认值”吗?@Santa在这方面不是必需的,但作为一种良好的实践,保留默认值是无害的。