Javascript 为什么我的switch语句中只有两种情况有效?
当我运行这段代码时,它总是一直到“Quadrat”为止。“Überraschung”也非常有效。“克雷斯”和“德雷克”没有。我真的不知道为什么会这样。你知道为什么吗Javascript 为什么我的switch语句中只有两种情况有效?,javascript,switch-statement,Javascript,Switch Statement,当我运行这段代码时,它总是一直到“Quadrat”为止。“Überraschung”也非常有效。“克雷斯”和“德雷克”没有。我真的不知道为什么会这样。你知道为什么吗 case 'Kreis': function draw() { ellipse(56, 46, 55, 55);} break; case 'Dreieck': function draw() { triangle(30, 75, 58, 20, 86, 75);}
case 'Kreis':
function draw() {
ellipse(56, 46, 55, 55);}
break;
case 'Dreieck':
function draw() {
triangle(30, 75, 58, 20, 86, 75);}
break;
case 'Quadrat':
function draw() {
rect(30, 20, 55, 55);}
break;
case 'Überraschung':
var rN = Math.floor(Math.random() * 3);
if (rN === 0) {
function draw() {
line(30, 20, 85, 75);}}
else if (rN === 1) {
function draw () {
quad(38, 31, 86, 20, 69, 63, 30, 76);}}
if (rN === 2) {
function draw () {
arc(50, 50, 80, 80, 0, PI + QUARTER_PI);}}
break;
default:
alert('Hast du was geschrieben, was ich verstehe?');
break;}
谢谢你抽出时间
函数
声明被挂起,函数的条件声明不是一件事:
if(真){
函数foo(){console.log('foo');}
}否则{
函数foo(){console.log('bar');}
}
foo()代码>您需要将其更改为单个绘图功能,然后在其中切换:
function draw() {
switch (what) {
case 'Kreis':
ellipse(56, 46, 55, 55);
break;
case 'Dreieck':
triangle(30, 75, 58, 20, 86, 75);
break;
case 'Quadrat':
rect(30, 20, 55, 55);
break;
case 'Überraschung':
var rN = Math.floor(Math.random() * 3);
if (rN === 0) {
line(30, 20, 85, 75);
} else if (rN === 1) {
quad(38, 31, 86, 20, 69, 63, 30, 76);
}
if (rN === 2) {
arc(50, 50, 80, 80, 0, PI + QUARTER_PI);
}
break;
default:
alert('Hast du was geschrieben, was ich verstehe?');
}
}
请添加开关部分和draw
的调用。不要在switch
中声明函数,使用函数参数传递想要的操作。该代码段不应该记录bar
?对我来说是这样的。如果不是这样的话,那就更证明了两次声明同一个函数是完全不可靠的。非常感谢您快速而有用的回答!今天晚些时候我要试试这个!非常感谢你。这似乎很容易,而且确实有效。但唯一的事情是。。。为什么它以这种方式工作而不是另一种方式工作?@Nat_u;正如deceze所说,多次定义一个函数不仅是不好的做法,而且在不同的环境中可能会有不同的工作方式。我的方式是明确的。