if语句没有返回true

时间:2015-11-11 15:45:24

标签: javascript if-statement

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

  

哎呀,再试一次。当number = 2时,看起来你的函数返回false。如果它接收的数字是偶数,检查if / else语句中的代码是否正确返回true。

问题是:

  

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

我的代码

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

我做错了什么?

3 个答案:

答案 0 :(得分:9)

试试这个

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

答案 1 :(得分: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

此外,您还在if语句中使用了硬编码4,因此它将始终返回true!函数的参数是数字。

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

答案 2 :(得分:1)

if if语句4%2提供0并在if语句中提供false,这就是为什么它不起作用。

通过

更改if语句
if(4%2==0)