簡體   English   中英

三元運算符isNaN

[英]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將解決您的問題。

DEMO

很多答案,您的代碼確實很接近,您需要做的就是刪除顯式的奇數測試。 如果前兩次測試均失敗,則無需進行第三次測試,結果必須為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM