gpt4 book ai didi

javascript - 递归 Switch 语句

转载 作者:行者123 更新时间:2023-12-02 19:25:05 25 4
gpt4 key购买 nike

模式随机时,我得到递归 Switch 语句的未定义值。这个想法是,这是最随机的,它将随机选择一个数字并设置一个新模式并返回原始的 switch 语句。

当模式不是随机时一切正常。所以我不确定这里出了什么问题。
变量a是模式,而i,j只是数字。

switchMode: function (i, j, a){
var b;
console.log(a);
switch(a) {
default:
case 'add':
console.log(i, j);
b = i + j;
break;

case 'minus':
console.log(i, j);
b = i - j; //negative numbers possible
break;

case 'multiply':
console.log(i, j);
b = i * j; //0 possible
break;

case 'random':
this.randomSwitchMode(i, j);
break; //random
}
return b;
},



randomSwitchMode: function(i, j) {
var c = Math.ceil(Math.random() * 3);

console.log(i, j, c);

switch(c) {
default:
case 1:
var a = 'add';
console.log(a);
this.switchMode(i, j, a);
break;

case 2:
var a = 'minus';
console.log(a);
this.switchMode(i, j, a);
break;

case 3:
var a = 'multiply';
console.log(a);
this.switchMode(i, j, a);
break;
}
}

最佳答案

您没有从“randomSwitchMode”返回任何内容。即使您这样做,您还必须确保将其返回值分配给“switchMode”中的“b”。

因此随机情况应如下所示:

            case 1: 
var a = 'add';
console.log(a);
return this.switchMode(i, j, a);

然后在“switchMode”中:

            case 'random':
b = this.randomSwitchMode(i, j);
break; //random

既然你无论如何都会遇到这些麻烦,我建议不要使用 switch 语句,而是保留一个将操作名称映射到函数的对象:

switchMode: function (i, j, a) {
var ops = {
'add': function(i, j) { return i + j; },
'minus': function(i, j) { return i - j; },
'multiply': function(i, j) { return i * j; },
'random': function(i, j) {
return ops[['add', 'minus', 'multiply'][Math.floor(Math.random() * 3)]](i, j);
}
};
return ops[a](i, j);
}

我猜你可以将“随机”情况分开并以不同的方式处理它。总而言之,虽然 switch 语句本质上没有任何问题,但基于数据结构的实现将会更加灵活。

关于javascript - 递归 Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com