如何正确实现严格比较和取模运算符

4
我已经为我正在学习的Udacity课程编写了这段代码,但不确定需要更改什么才能得到正确的答案。
我被要求编写一个代码,如果是偶数则打印“even”,如果是奇数则打印“odd”。
当我运行代码时,它会给出所需的响应,因此我不确定为什么我收到“需要在我的条件语句中使用严格比较”和需要使用模运算符来确定数字是偶数还是奇数的反馈。
我需要有人指出如何编写更“严格”的比较,并使用(或正确使用,因为我认为我已经使用了它)模运算符。
var number = 19;

if (number % 2) {console.log ("odd");

} else { console.log ("even"); 

}

请看这里。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Identity - nice_dev
2
number % 2 === … …? - 04FS
1
你并没有与任何东西进行比较,而只是创建了 number%2 的值并测试它的真实性 - Matt Ellen
3个回答

4

你的代码有效是因为如果数字是整数,number % 2将始终是01。现在,1是真值,0是假值。对于所有奇数,number % 2将返回1,而1是真值,所以考虑number19

if(number % 2)
if(1)
if(true) //block will executed.

但如果数字是0,它将返回0,而if(0)if(false)相同,代码将跳转到else块。

使用===将结果与0进行比较。

var number = 19;

if (number % 2 === 0) {
  console.log("even");

} else {
  console.log("odd");
}


1
你需要在模运算符%旁边使用一个===比较运算符。虽然你所做的并不是错误的,但我认为Udacity期望的陈述类似于这样:

var number = 19;

if (number % 2 === 0) {
  console.log ("even");
} else { 
  console.log ("odd"); 
}

严格比较和普通比较

现在当你使用双等于符号==时,JS引擎将尝试转换操作数并查看它们是否匹配。换句话说,它的类型不会被比较。

如果您使用三个等于符号===,那么JS引擎将不会转换操作数,并且除了值之外,它的类型也将被比较。

在普通比较中:"10" == 10将返回true。 在严格比较中,上述表达式将返回false


0

var number = 19;

if (number % 2 === 0) {console.log ("even");

} else { console.log ("odd"); 

}


2
可能是因为没有解释。 - Maheer Ali
不知道为什么会被踩。无论如何,感谢您的赞成和中立化负面评价 :) - Arun
@MaheerAli 嗯,可能就是这样。 - Arun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接