【问题标题】:if statement not returning trueif 语句不返回 true
【发布时间】:2016-02-12 18:21:22
【问题描述】:

我应该得到一个可以被二整除的数字,我正在这样做。我不确定为什么我的代码不起作用。我在学习 javascript 的课程中​​这样做。我得到的错误是这样的:

糟糕,再试一次。看起来您的函数在 number = 2 时返回 false。如果收到的数字是偶数,请检查 if/else 语句中的代码是否正确返回 true。

问题是这样的:

在 isEven 函数中编写 if / else 语句。 它应该返回 true;如果它收到的数字能被 2 整除。 否则 (else),它应该返回 false;。 确保返回 - 不要使用 console.log()!

我的代码

var isEven = function(number) {
// Your code goes here!
  if(4 % 2) {
      return true;
  } else {
      return false;
  }
};

我做错了什么?

【问题讨论】:

  • 4 应该是number
  • 那么我应该在哪里定义数字?
  • number 是函数的形式参数
  • number 是您为参数键入的名称,因此在isEven(42) 之后的函数中,number 包含 42,即您要针对 %2 测试的内容
  • 另外,4 % 2 会给你0 这是falsy

标签: javascript if-statement


【解决方案1】:

试试这个

var isEven = function(number) {
  if(number % 2 === 0) {
      return true;
  } else {
      return false;
  }
};

console.log(isEven(4));
console.log(isEven(3));
console.log(isEven(6));

一行更美

var isEven = function(number) {
  return number % 2 === 0;
};

console.log(isEven(4));
console.log(isEven(3));
console.log(isEven(6));

【讨论】:

    【解决方案2】:

    在 if 语句中 4%2 给出 0 而在 if 语句中给出 false,这就是它不起作用的原因。

    改变 if 语句

    if(4%2==0)
    

    【讨论】:

      【解决方案3】:

      其他答案在我输入时是正确的,但要解释一下

      var isEven = function(number) {
      // Your code goes here!
        if(4 % 2) {
            return true;
        } else {
            return false;
        }
      };
      

      % 这是模除法运算符。所以它返回一个值。模数告诉你除法后剩下的余数。所以 4 模数 2 返回 0,因为没有任何剩余。因此,为什么您需要检查返回值

      var isEven = function(number) {
      // Your code goes here!
        if(4 % 2 == 0) {
            return true;
        } else {
            return false;
        }
      };
      

      如果没有余数,则为偶数,因为 2 将其均分,没有余数。所以 3 模 2 返回 1,因为 2 除以 3 一次,剩下 1。

      根据下面的评论(似乎它已被删除),在用负数和正数说话时,模数和余数之间似乎存在差异,但严格来说,javascript 运算符是这样定义的:

      余数运算符返回一个操作数除以第二个操作数时的余数。它总是取除数的符号,而不是除数。它使用内置的模函数来产生结果,即 var1 除以 var2 的整数余数——例如——var1 modulo var2。有一个建议是在未来版本的 ECMAScript 中获得一个实际的模运算符,不同之处在于模运算符的结果将采用除数的符号,而不是被除数。

      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators

      您还把 4 硬编码到 if 语句中,所以它总是返回 true!该函数的参数是数字。

      var isEven = function (number) {
          // Your code goes here!
          if (number % 2 == 0) {
              return true;
          }
          else {
              return false;
          }
      };
      

      【讨论】:

      • 感谢您的精彩回答!为什么其他人说要使用 number 参数。我从来没有定义过,所以如果 `number % 2 === 0' 怎么可能是真的。我试过这个,它是正确的。我只是不明白为什么。
      • @Becky 请参阅函数定义行“var isEven = function(number) {”,函数后面的括号内是您定义函数的输入或参数的位置。您定义了一个名为 number 的参数。这样您就可以传入一个值并针对该函数进行测试。所以无论何时你这样做:函数内部的 isEven(30) 参数号现在保持值 30。也没有问题!乐于助人=]
      • 知道了,所以我只是做一个 if 语句,然后如果我给 number 一个值,它会测试它。
      • 正确。您的 if 语句将始终返回 true,因为 4 模 2 将始终返回 0,使用定义的参数编号使函数动态,因为其结果取决于每次调用函数时都可以更改的变量。
      • @Becky 如果您使用的是 Codecademy 之类的东西,他们会在参数中为您插入一个数字,无需您自己调用该函数。
      猜你喜欢
      • 2016-01-04
      • 2015-12-16
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多