[英]Ternary operator isNaN
我想檢查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/
我究竟做錯了什么?
您已接近,只需先檢查isNaN即可,因為它與其他兩項檢查無關。
function even_or_odd(number)
{
return isNaN(number) ? "not a number" : ( number % 2 === 0 ? "Even" : "Odd" );
}
使用三元運算符的雙重或三重嵌套條件的問題是您需要封裝它們。 使用這種方式:
return (number % 2 === 0) ? "Even" : ((number % 2 !== 0) ? "Odd" : (isNaN(number) ? "not a number" : ""));
還要添加isNaN(number)
作為第一項檢查。
問題是NaN % 2 !== 0
為true,因此即使您傳遞的值可以被評估為NaN
,您也將結果視為“奇數”。
將您的條件從number % 2 !== 0
更改number % 2 === 1
將解決您的問題。
很多答案,您的代碼確實很接近,您需要做的就是刪除顯式的奇數測試。 如果前兩次測試均失敗,則無需進行第三次測試,結果必須為NaN。
function even_or_odd(number) { return number%2 === 0? 'Even' : number%2? 'Odd' : 'Not a number'; } document.write(even_or_odd('hi'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.