如何在JavaScript中使用switch

如何在JavaScript中使用switch,javascript,switch-statement,Javascript,Switch Statement,我一直在尝试做一个密码生成器,我有这个代码,它返回的是“未定义”而不是一个字符。代码应该返回16个字符,包括数字、小写和大写字符。我想要这个,这样我就不必再担心自己的密码了 帕斯根 函数getRandomInt(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; } 函数num2lett(num){ 开关(num){ 案例(数量>36): 返回字符串.fromCharCode(577+num-35); 打破 案例(数值>10&&num

我一直在尝试做一个密码生成器,我有这个代码,它返回的是“未定义”而不是一个字符。代码应该返回16个字符,包括数字、小写和大写字符。我想要这个,这样我就不必再担心自己的密码了


帕斯根
函数getRandomInt(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
函数num2lett(num){
开关(num){
案例(数量>36):
返回字符串.fromCharCode(577+num-35);
打破
案例(数值>10&&num<37):
返回字符串.fromCharCode(97+num-11);
打破
案例(num==10):
返回“0”;
打破
病例(数量<10):
返回“”+num;
打破
}
}
函数uuidMake(){
var uuid=“”;
对于(u=0;u<16;u++){
randNum=getRandomInt(0,62);
uuid+=num2lett(randNum);
}
document.getElementById(“密码”).innerHTML=uuid;
}
@字体{
字体系列:“uuid_字体”;
src:url(“Courier Prime Code.ttf”)格式(“TrueType”);
}
身体{
背景色:#262626;
}
#密码{
字体系列:“uuid_字体”;
文本对齐:居中;
字体大小:30px;
颜色:#dddddd;
边缘顶部:250px;
}
单击我


您不能像if-else那样使用case语句,所以只需使用if-else条件,其工作方式如下例所示

函数getRandomInt(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; } 函数num2lett(num){ 如果(数值>36) 返回字符串.fromCharCode(577+num-35); 否则如果(数值>10&&num<37) 返回字符串.fromCharCode(97+num-11); else if(num==10) 返回“0”; 否则如果(数值<10) 返回“”+num; } 函数uuidMake(){ var uuid=“”; 对于(u=0;u<16;u++){ randNum=getRandomInt(0,62); uuid+=num2lett(randNum); } document.getElementById(“密码”).innerHTML=uuid; }
@font-face{
字体系列:“uuid_字体”;
src:url(“Courier Prime Code.ttf”)格式(“TrueType”);
}
身体{
背景色:#262626;
}
#密码{
字体系列:“uuid_字体”;
文本对齐:居中;
字体大小:30px;
颜色:#dddddd;
边缘顶部:250px;
}

单击我

您不能像if-else那样使用case语句,所以只需使用if-else条件,其工作方式如下例所示

函数getRandomInt(最小值、最大值){ 返回Math.floor(Math.random()*(max-min+1))+min; } 函数num2lett(num){ 如果(数值>36) 返回字符串.fromCharCode(577+num-35); 否则如果(数值>10&&num<37) 返回字符串.fromCharCode(97+num-11); else if(num==10) 返回“0”; 否则如果(数值<10) 返回“”+num; } 函数uuidMake(){ var uuid=“”; 对于(u=0;u<16;u++){ randNum=getRandomInt(0,62); uuid+=num2lett(randNum); } document.getElementById(“密码”).innerHTML=uuid; }
@font-face{
字体系列:“uuid_字体”;
src:url(“Courier Prime Code.ttf”)格式(“TrueType”);
}
身体{
背景色:#262626;
}
#密码{
字体系列:“uuid_字体”;
文本对齐:居中;
字体大小:30px;
颜色:#dddddd;
边缘顶部:250px;
}

单击我

开关
块中,您已经在
案例中写入了条件语句


不能在
开关
块中使用条件语句。因此,在您的案例中,
案例
都没有执行。由于没有
默认
块,因此函数不会返回任何内容,在javascript中,这是
未定义的
。因此,您在
开关
块中得到了
未定义的

,您已经在
案例
中编写了条件语句


不能在
开关
块中使用条件语句。因此,在您的案例中,
案例
都没有执行。由于没有
默认
块,因此函数不会返回任何内容,在javascript中,这是
未定义的
。因此,您将获得未定义的

这不是
开关的好用例。使用
if
else
语句

switch
语句中的
case
s是要打开的表达式的特定可能值。例如,可以编写如下内容:

switch (n) {
    case 1:
        // things to do when n is 1
        break;
    case 3:
    case 4:
        // things to do when n is 3 or 4
        break;
    default:
        // things to do when n is neither 1, 3, nor 4
}

case
语句不能是值的范围。也不建议将表达式用作
案例
,它不是无效的,但可能也不会达到预期效果。

这不是
开关
的好用例。使用
if
else
语句

switch
语句中的
case
s是要打开的表达式的特定可能值。例如,可以编写如下内容:

switch (n) {
    case 1:
        // things to do when n is 1
        break;
    case 3:
    case 4:
        // things to do when n is 3 or 4
        break;
    default:
        // things to do when n is neither 1, 3, nor 4
}

case
语句不能是值的范围。也不建议将表达式用作
大小写,因为它不是无效的,但它可能也不会达到您的预期效果。

您可以更改switch语句使其工作。在开关中传递“true”,并从case条件中删除括号

switch (true) {
   case num > 36: 

您可以修改switch语句使其工作。在开关中传递“true”,并从case条件中删除括号

switch (true) {
   case num > 36: 

大部分都是有效的,不过我有点担心大写字母,有没有办法解决这个问题?我认为是577(unicode)首先将这一行if条件替换为这一行if(num>36)返回String.fromCharCode(65+num-35);这大部分是有效的,不过我有点担心大写字母,一个