<!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>