【发布时间】:2016-11-07 20:33:35
【问题描述】:
也许我问了谷歌所有错误的问题,但我在互联网上搜索并找不到与我的独特问题相似的帖子。
这是来自 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 是 时,a 被分配 -a 和 b 被分配 -b。 为什么要这样做? 另外我想把它转换成一个 Switch 语句,但是我遇到了这个负 num 值的问题。 下面是我写的两个 switch 语句,但是当使用负数输入时 abTest(-2,2) 或 abTest(2,-2)不返回值 undefined。
我的第一个 Switch 声明
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 语句和负 num 值的逻辑中的这个漏洞在哪里?
谢谢大家,
【问题讨论】:
-
switch(a, b)忽略a并且只检查b因为,是逗号运算符,switch不能用作函数。那里只能有一个变量。cases 也不像if语句那样工作;你不能把条件放在那里,你需要把值放在那里。 -
没有理由为此使用
switch。if (a < 0 || b < 0) return undefined;. -
好的,但是关于 if 和 else 语句背后的逻辑。为什么以及在哪里将我的负 num 输入转换回正 num?还是语言的性质,我必须始终将低于 0 的数字指定为负数?
标签: javascript if-statement switch-statement negative-number square-root