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

时间:2019-05-09 14:27:39

标签: javascript

我已经为所学的大胆课程编写了这段代码,不确定是否需要更改才能获得正确答案

我被要求写一个代码,如果它是偶数,则打印“偶数”,如果是奇数,则打印“奇数”

当我运行代码时,它会给我所需的响应,因此我不确定为什么收到我“需要在条件语句中使用严格比较”的反馈,并且需要使用模运算符来确定是否这个数字是偶数还是奇数

我需要有人指出如何编写更“严格”的比较以及如何使用(或正确使用,因为我以为我在使用它)模运算符。

['a', 'b', 'c', 'b', 'x', 'y', 'e', 'f', 'b', 'x', 'y']
['a', 'b', 'c', 'g', 'b', 'x', 'y', 'b', 'x', 'y']
['c', 'b', 'x', 'y', 'e', 'f']
['c', 'g', 'b', 'x', 'y']
['b', 'x', 'y']

3 个答案:

答案 0 :(得分:5)

您的代码之所以有效,是因为number % 2始终为01(如果number是整数)。现在,1是真实值,而0是脆弱的。对于所有奇数,number % 2将返回1,而1是真实值,因此考虑到number19

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

但是,如果数字为空,它将返回0,并且if(0)if(false)相同,并且代码将跳至else块。

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

var number = 19;

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

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

答案 1 :(得分:1)

您需要将===比较运算符与模运算符%一起使用。 尽管您所做的没错,但我相信Udacity期望的语句是这样的:

var number = 19;

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

严格对比常规

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

但是,如果您使用等于===的三元组,那么JS引擎将不会强制转换操作数,并且还会比较其类型的值。

通常比较:"10" == 10将返回true 严格来说,以上表达式将返回false

答案 2 :(得分:0)

var number = 19;

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

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

}