关于负数输入被转换为正数输入的逻辑

时间:2016-07-05 21:25:53

标签: javascript if-statement switch-statement negative-number square-root

也许我问谷歌所有错误的问题,但我搜索了互联网,找不到类似于我独特问题的帖子。

这是来自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语句和负数值的这个洞在哪里?

谢谢你们,

1 个答案:

答案 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));
 }
}

希望这会有所帮助