我想检查1)数字是偶数还是奇数2)如果值不是数字,则打印一条说“不是数字”的消息。我使用了if else语句,但我正在尝试使用三元语句进行练习,这是代码:
function even_or_odd(number) {
return number % 2 === 0 ? "Even" : number % 2 !== 0 ? "Odd" : isNaN(number) ? "not a number" : "";
}
console.log(even_or_odd(hi));
它适用于数字,成功打印“偶数”或“奇数”但在isNaN中失败。
小提琴:https://jsfiddle.net/DimitriXd4/bwfhmqfm/7/
我做错了什么?
答案 0 :(得分:3)
你很接近,只是先检查isNaN,因为它与其他两个检查无关。
function even_or_odd(number)
{
return isNaN(number) ? "not a number" : ( number % 2 === 0 ? "Even" : "Odd" );
}
答案 1 :(得分:1)
使用三元运算符的双重或三重嵌套条件的问题是您需要封装它们。以这种方式使用它:
return (number % 2 === 0) ? "Even" : ((number % 2 !== 0) ? "Odd" : (isNaN(number) ? "not a number" : ""));
同时添加isNaN(number)
作为第一次检查。
答案 2 :(得分:1)
问题是NaN % 2 !== 0
是正确的,因此即使您传递的值可以评估为NaN
,您也会看到结果为“奇数”。
将您的情况从number % 2 !== 0
更改为number % 2 === 1
将解决您的问题。
答案 3 :(得分:1)
很多答案,你的代码非常接近,你需要做的就是删除明确的奇数测试。如果前两个测试都失败,则不需要第三个,结果必须是NaN。
function even_or_odd(number) {
return number%2 === 0? 'Even' : number%2? 'Odd' : 'Not a number';
}
document.write(even_or_odd('hi'));