http://www.ituring.com.cn/art...
非数字(NaN)那一小节 为什么要 typeof newValue === 'number' && typeof oldValue === 'number'判断这个呢?那里不就为了判断两个值是否都为NaN的情况吗?
http://www.ituring.com.cn/art...
非数字(NaN)那一小节 为什么要 typeof newValue === 'number' && typeof oldValue === 'number'判断这个呢?那里不就为了判断两个值是否都为NaN的情况吗?
isNaN(null) // false
isNaN(undefined) // true
undefined
被认为也是NaN
,所以需要先判断newValue
和 oldValue
都是number
类型,这样就可以排除undefined
了。。
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
在这里
newValue === oldValue
的时候,如果两个值都是undefined
,这个等式也成立,不会执行后面的判断。所以这里判断类型绝不是处理undefined
的情况。做以下试验:
基本可以判断,如果某个值可以转换成数值,
isNaN()
就会返回false
,否则返回true
。也就是说,isNaN("hello") && isNaN({})
是成立的,但是很明显"hello"
和{}
不等——这才是需要先判断类型是number
的原因。