<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>javascript</title> <style> </style> </head> <body> <script> // 下面的字符串转换成NaN结果,但是,NaN也是数字类型 iNumber = parseInt("a12bc") document.write(iNumber) document.write("--->") document.write(typeof iNumber) document.write("<br/>") //注意NaN与别的整数相加的结果也是NaN var temp = iNumber + 2 document.write(temp) document.write("----") document.write(typeof temp) document.write("<br/>") // NaN与字符串的结果是字符串 temp = iNumber + " haha" document.write(temp) document.write("---") document.write(typeof temp) document.write("<br/>") // JavaScript中,NaN是一个特殊的数字值(typeof NaN的结果为number),是not a number的缩写,表示不是一个合法的数字 // 一特殊的数字类型的值,但它又不是数字 document.write(typeof NaN) document.write("<br/>") // 得到一个NaN的几种情况 iNumber = parseInt("ab23c") document.write(iNumber) document.write("<br/>") iNumber = parseInt("ab23") document.write(iNumber) document.write("<br/>") iNumber = Number("cd2") document.write(iNumber) document.write("<br/>") iNumber = Number(undefined) document.write(iNumber) document.write("<br/>") iNumber = Math.log(-1) document.write(iNumber) document.write("<br/>") iNumber = Math.sqrt(-1) document.write(iNumber) document.write("<br/>") iNumber = Math.acos(2) document.write(iNumber) document.write("<br/>") document.write("----------------------------") document.write("<br/>") // NaN参与的任何运算都是NaN iNumber = NaN + 1 document.write(iNumber) document.write("<br/>") iNumber = NaN -1 document.write(iNumber) document.write("<br/>") iNumber = NaN * 2 document.write(iNumber) document.write("<br/>") iNumber = NaN /2 document.write(iNumber) document.write("<br/>") iNumber = 3 / NaN document.write(iNumber) document.write("<br/>") // NaN是在js中唯一一个和自身不相等的值 if(NaN == NaN){ document.write("我自己与自己比较是相等的") document.write("<br/>") }else { document.write("我自己与自己比较是不相等的,悲哀!") document.write("<br/>") } // 我们可以使用全局函数isNaN()来判断一个数值是不是一个非数字(并不是用来判断是不是NaN这个值) // 因为NaN也是数字类型的,主要用来判断目标确定是是一个数值的情况下 iNumber = isNaN(NaN) document.write(iNumber)//true document.write("<br/>") //false iNumber = isNaN(123.1) document.write(iNumber) document.write("<br/>") iNumber = isNaN("123.23") document.write(iNumber)//false document.write("<br/>") // 为什么说isNaN()不是用来判断是不是NaN这个值的呢?因为isNaN对非数字不起作用,它首先做的就是把这些值转换成数字,转换的结果可能为NaN,然后函数会错误地返回true: iNumber = isNaN("abc123") document.write(iNumber)//true document.write("<br/>") document.write("---------------------") document.write("<br/>") // 所以我们想确定这个一个值是为NaN,可以使用以下两种方法: // // 方法一:将isNaN()和typeof结合来判断 function isRealNaN(value){ return typeof value === "number" && isNaN(value) } document.write(isRealNaN("abc"))//false document.write("<br/>") document.write(isRealNaN(23.234))//false document.write("<br/>") document.write(isRealNaN(NaN))//true document.write("<br/>") document.write("---------------------") document.write("<br/>") // 方法二:值是否与本身不相等(NaN是唯一有这样特征的值) function isValueNaN(value) { return value !== value } document.write(isValueNaN(NaN))//true document.write("<br/>") document.write(isValueNaN("abc"))//false document.write("<br/>") document.write(isValueNaN(12.23))//false document.write("<br/>") </script> </body> </html>