2012-07-06 54 views
44

可能重複:
Comparing NaN values for equality in Javascript我如何測試NaN?

誰能告訴我這是爲什麼不工作?

if(inbperr == NaN){ 
document.getElementById('inbclo').value = "N/A"; 
} 
else{ 
document.getElementById('inbclo').value = "%" + inbperr; 
} 

而不是返回百分比值或「N/A」像我這想它的精選返回「%NAN」。

+0

只是一個替換語法是DRY-ER ...'的document.getElementById( 'inbclo')值= isNaN(inbperr) 'N/A':? 「%」 + inbperr;' – Basic 2012-07-06 00:37:42

+0

http://stackoverflow.com/questions/2652319/how-do-you-check-that-a-number-is-nan-in-javascript – Foreever 2014-07-14 04:20:36

+2

'函數isReallyNaN的(a){ \t \t返回isNaN的可能的複製(a)&&「number」== typeof a \t};' – SpYk3HH 2015-01-19 20:51:25

回答

82

NaN是不尋常的:他們不等於任何東西,甚至他們自己。您需要使用isNaN(inbperr)來判斷某個值是否爲NaN。

+1

欲瞭解更多信息,請閱讀https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN?redirectlocale= en-US&redirectslug = JavaScript%2FReference%2FGlobal_Objects%2FisNaN – 2013-06-10 15:02:44

+15

'typeof NaN' ======>'「number」'WTF?不,它不是*號,我們確定了這一點。 – charltoons 2014-04-19 20:49:11

+0

+1正是我需要的。 – 2014-05-14 16:10:32

1

NaN不是數字。少數JavaScript有毒類型之一。它可以將整個表達降低到NaN。

http://www.crockford.com/javascript/encyclopedia/

+0

爲什麼「_toxic」「?:]當你嘗試除以零時,通常會出現'NaN'根據數學(至少這是我多年前學過的),結果不是數字(是無窮大或者類似的奇怪/有毒的東西)。你想如何在Javascript中表示這個? – trejder 2013-07-18 07:37:51

+2

它是「有毒的」,因爲整個計算結果被減少到NaN,例如:a * b * c/d-e + f。 NaN整個計算變成NaN,沒有任何異常,沒有警告,腳本繼續運行並攜帶那個NaN直到它撞到牆上,所以你可以在陌生的地方找到NaN – CoR 2013-07-18 12:40:05

+0

從這個角度看 - 贊同!:] – trejder 2013-07-19 06:35:20