“isNaN()確實(shí)適用于對(duì)象。在基于對(duì)象調(diào)用isNaN()函數(shù)時(shí),會(huì)首先調(diào)用對(duì)象的valueOf()方法,然后確定該方法返回的值是否可以轉(zhuǎn)換為數(shù)值。如果不能,則基于這個(gè)返回值再調(diào)用toString()方法,再測(cè)試返回值。”
這段內(nèi)容不明白,請(qǐng)各位老師給解釋一下,多謝!
undersocerjs
對(duì)NaN
的判斷
解釋的夠清楚了,哈哈,望采納
上面代碼的valueOf和toString方法,返回的都是對(duì)象,所以轉(zhuǎn)成數(shù)值時(shí)會(huì)報(bào)錯(cuò)。
默認(rèn)情況下,對(duì)象的valueOf方法返回對(duì)象本身,所以一般總是會(huì)調(diào)用toString方法,而toString方法返回對(duì)象的類型字符串(比如[object Object])。所以,會(huì)有下面的結(jié)果。
為了更好的解釋先運(yùn)行的valueOf()方法,可以進(jìn)行如下測(cè)試,Number() 和 isNaN()行為類似
如果toString方法返回的不是原始類型的值,結(jié)果就會(huì)報(bào)錯(cuò)。