【问题标题】:Logic concerning negative num inputs being converted to positive num inputs有关将负 num 输入转换为正 num 输入的逻辑
【发布时间】:2016-11-07 20:33:35
【问题描述】:

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

这是来自 FreeCodeCamp 的简单编码挑战: 我需要处理 函数 abTest(a,b) 当 a OR b 小于 0 ,函数将以 undefined 的值退出。这是因为我们通过平方根函数运行值 ab。你不能取负数的平方根。下面是代码。

// 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);

我上面使用的这段代码可以正常工作。但是我必须指定当 ab 时,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 声明

  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 语句那样工作;你不能把条件放在那里,你需要把值放在那里。
  • 没有理由为此使用switchif (a &lt; 0 || b &lt; 0) return undefined;.
  • 好的,但是关于 if 和 else 语句背后的逻辑。为什么以及在哪里将我的负 num 输入转换回正 num?还是语言的性质,我必须始终将低于 0 的数字指定为负数?

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


【解决方案1】:

除非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));
 }
}

希望对你有帮助

【讨论】:

  • 啊,在 freecodecamp 中更简单并且工作得很好。谢谢,
猜你喜欢
  • 2017-09-09
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2022-07-19
相关资源
最近更新 更多