简单的说isNaN()是判断一个值是不是不能被转成数字
isFinite()是和isNaN()相反的,判断一个一个值是不是能转成数字
首先,Number类型肯定是能转的,Number(1)
//1
然后,数字的字符串也能转的,Number('1')
//1
然后,各种可能和0等价的东西,null,"" ,false,(true == 1).......
反正就是按照这个思路,下面的代码你就能得出正确的答案
javascript
console.log(isNaN(NaN)); //NaN就是Not-A-Number console.log(isNaN(undefined));//undefined什么都不是,当然也Not-A-Number. console.log(isNaN(null));// 能转成0 console.log(isNaN("")); // 能转成0 console.log(isNaN({})); // 相当于undefined console.log(isNaN([])); // 能转成0 console.log(isNaN(new Object())); //NaN console.log(isNaN(new String())); //能转成0 console.log(isNaN(new String("a"))); //转成字符串 console.log(isNaN(new Array())); //能转成0 console.log(isNaN(new Date())); //能转成数字 console.log(isNaN(new Date().toString())); //转成字符串 console.log(isNaN(true));//能转成1 console.log(isNaN(0/0)); //结果就是NaN
然后说isFinite(),前面说了,和isNaN()是相反的,
要说不同的地方,isFinite()是ECMAScript2定义的,isNaN是ECMAScript1的时候就定义了,不知道某E的老版本会不会有特殊情况出现
代码就不贴了,逃
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。