www.msyz555.comNaN的题目,这里作者的意图安在?

http://www.ituring.com.cn/art…
非数字(NaN)那一小节 为什么要 typeof newValue === number && typeof oldValue === number判别这个呢?那边不就为了判别两个值能否都为NaN的情况吗?

return newValue === oldValue ||
      typeof newValue === number && typeof oldValue === number &&
       isNaNnewValue && isNaNoldValue;

在这里 newValue === oldValue 的时分,假如两个值都是 undefined,这个等式也树立,不会实行后面的判别。以是这里判别范例绝不是处理 undefined 的情况。

做以下实验:

isNaN"hello"  // true
isNaNtrue     // false
isNaN{}       // true
isNaN"1234"   // false

根本可以判别,假如某个值可以转换成数值,isNaN 就会前往 false,不然前往 true。也便是说,isNaN"hello" && isNaN{} 是树立的,但是很分明 "hello"{} 不等——这才是需求先判别范例是 number 的缘由。

isNaNnull // false
isNaNundefined // true

undefined被以为也是NaN,以是需求先判别newValueoldValue都是number范例,如许就可以打扫undefined了。。

NaN 本身是 number 范例,打扫统统非 number 范例的干扰

在其他言语中 假如一个变量本来应该是 数值的,倒是一个 非数值的值,如许会报错,次序会停息实行。
js 引进 NaN 便是为了可以让次序持续实行 而不是被中缀。

(看完/读完)这篇文章有何感想! www.msyz555.com的分享…

发表评论

姓名 *
电子邮件 *
站点