javascript - 在“你不知道 JS”一书中,我有一个关于 isNaN polyfills 的问题
问题描述
在凯尔·西姆森的书中You Don't Know JS
,
您还可以通过应用 NaN 不等于自身的唯一性来更简单地实现 polyfill。NaN 是世界上所有语言中唯一的值“除了 self 之外的任何值总是等于你”。
函数isNaN的polyfill提出如下。
// polyfill NaN
if (!Number.isNaN) {
Number.isNaN = function(n) {
return n !== n;
};
}
但是,代码n! == n
总是被迫false
吗?(其实我把函数做简单执行的时候也是这样)
所以我不明白代码是什么意思。
如果您能解释一下,我将不胜感激。
解决方案
NaN
是Javascript 中唯一的值,当它与自身比较时===
,产生false
(或者,等效地,当与自身比较时!==
,返回true
)。任何其他值,当使用 对其自身进行检查时===
,将返回true
。
NaN !== NaN // true
const obj = {};
obj !== obj // false
0 !== 0 // false
'foo' !== 'foo' // false
// etc, everything else other than NaN
// will produce: // false
所以
return n !== n;
是是否n
是的可靠检查NaN
。
推荐阅读
- spring-boot - 使用 spring data jpa 将 POJO 保存到 DB
- c# - 如何将 Select2 SelectList 中的值存储为字符串
- android - 如何防止用户在 ACTION_CREATE_DOCUMENT 上选择不支持“wa”模式打开文件描述符的位置?
- java - 通过命令行运行项目时如何在gradle中设置系统属性?
- python - 在盈透证券的 TWS api 下另一个订单之前,我如何检查是否有未平仓订单?
- php - 查询太旧且响应超时已过期或查询 ID 在(截断...)电报机器人 API
- html - 如何在溢出可见的父项内滚动/拖动元素?
- typescript - 更正将字段映射在一起的 TS 声明
- vue.js - 尝试使用 Vuex 和 VueJS 两种方式配置查看购物车页面
- ios - 如何在 iOS 设备上检索预览应用程序