相关的IEEE标准定义了一个数字常量NaN(不是数字),并规定NaN应该比较为不等于它自己.这是为什么?
我熟悉的所有语言都实现了这个规则.但它经常会导致严重的问题,例如当NaN存储在容器中时,NaN存在于正在排序的数据中等时的意外行为等.更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解NaN之前,令人惊讶的是他们增加了错误和混乱.
IEEE标准经过深思熟虑,因此我确信NaN的比较与其本身相同是很糟糕的.我只是想不通它是什么.
一位朋友问我在求职面试中得到的这个问题
function canbetrue(x) {
return x != x;
}
Run Code Online (Sandbox Code Playgroud)
哪个值param会使上述函数返回true?
console.log(canbetrue(param));
Run Code Online (Sandbox Code Playgroud)