相关疑难解决方法(0)

(NaN!= NaN)和(NaN!== NaN)之间有什么区别?

首先,我要提一提,我知道如何isNaN()Number.isNaN()工作.我正在阅读David Flanagan的The Definite Guide,他给出了一个如何检查值是否为例子的例子NaN:

x !== x
Run Code Online (Sandbox Code Playgroud)

这将导致true当且仅当xNaN.

但现在我有一个问题:他为什么要使用严格的比较?因为它似乎

x != x
Run Code Online (Sandbox Code Playgroud)

表现方式相同.是否可以安全使用的两个版本,或我很想念在JavaScript中的一些值(S),将返回truex !== xfalsex != x

javascript nan

147
推荐指数
3
解决办法
1万
查看次数

为什么NaN不等于NaN?

相关的IEEE标准定义了一个数字常量NaN(不是数字),并规定NaN应该比较为不等于它自己.这是为什么?

我熟悉的所有语言都实现了这个规则.但它经常会导致严重的问题,例如当NaN存储在容器中时,NaN存在于正在排序的数据中等时的意外行为等.更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解NaN之前,令人惊讶的是他们增加了错误和混乱.

IEEE标准经过深思熟虑,因此我确信NaN的比较与其本身相同是很糟糕的.我只是想不通它是什么.

language-agnostic floating-point nan ieee-754

114
推荐指数
5
解决办法
3万
查看次数

将变量与自身进行比较

我偶然发现了这个Array.prototype.includes的polyfill. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes.是否有理由在第21,22行将变量与自身进行比较?

if (searchElement === currentElement ||
         (searchElement !== searchElement && currentElement !== currentElement)) {
  return true;
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays include polyfills

8
推荐指数
1
解决办法
668
查看次数

在JavaScript中给出x!= x.'x'的类型是什么?

我在JavaScript采访中被问过

如果x!=xTRUE,可能的类型是x什么?

面试官告诉我,只有一种可能的类型x可以得到这个结果.

javascript

2
推荐指数
2
解决办法
2347
查看次数