也许我问谷歌所有错误的问题,但我搜索了互联网,找不到类似于我独特问题的帖子。
这是来自FreeCodeCamp的简单编码挑战: 我需要处理函数abTest(a,b ),其中 a OR b 小于 0 ,该函数将以 undefined 的值退出。这是因为我们通过平方根函数运行值 a 和 b 。你不能采用负数的平方根。以下是代码。
// Setup
function abTest(a, b) {
if (a < 0) {
a = -a;
return undefined;
} else if (b < 0) {
b = -b;
return undefined;
}
return Math.round(Math.pow(Math.sqrt(a) + Math.sqrt(b), 2));
}
// Change values below to test your code
abTest(2,2);
我上面使用的代码工作正常。但是,当 a 或 b &lt; 时,我必须指定0 , a 分配 -a , b 分配 -b 。 为什么这有必要?此外我想将其转换为Switch语句,但我遇到了负数值的问题。 下面是我写的两个切换语句,但使用负数输入时 abTest(-2,2)或 abTest(2,-2)不会返回值未定义。
我的第一个转换声明
switch (a,b) {
case a<0 || b<0:
return undefined;
}
switch (a,b) {
case a < 0:
a = -a;
console.log(undefined);
break;
case b < 0:
b = -b;
console.log(undefined);
break;
}
我的逻辑中关于switch语句和负数值的这个洞在哪里?
谢谢你们,
答案 0 :(得分:0)
除非freecodecamp出现问题,否则不应该转换a = -a。只返回undefined的值将会产生与更改变量完全相同的结果,然后仍返回undefined。为简化代码,您还可以组合if和else if语句,如此
function abTest(a, b) {
if (a < 0 || b < 0){
return undefined;
} else {
return Math.round(Math.pow(Math.sqrt(a) + Math.sqrt(b), 2));
}
}
希望这会有所帮助