我已经为所学的大胆课程编写了这段代码,不确定是否需要更改才能获得正确答案
我被要求写一个代码,如果它是偶数,则打印“偶数”,如果是奇数,则打印“奇数”
当我运行代码时,它会给我所需的响应,因此我不确定为什么收到我“需要在条件语句中使用严格比较”的反馈,并且需要使用模运算符来确定是否这个数字是偶数还是奇数
我需要有人指出如何编写更“严格”的比较以及如何使用(或正确使用,因为我以为我在使用它)模运算符。
['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']
答案 0 :(得分:5)
您的代码之所以有效,是因为number % 2
始终为0
或1
(如果number是整数)。现在,1
是真实值,而0
是脆弱的。对于所有奇数,number % 2
将返回1
,而1
是真实值,因此考虑到number
是19
。
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");
}