本文介绍了纯函数给出严格相等的参数,产生非严格相等的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是 f 为此 f(a)!== f(b)尽管 a === b (注意 a 和 b 的某些值,em>严格等于):

Below is a pure function f for which f(a) !== f(b) despite a === b (notice the strict equalities) for some values of a and b:

var f = function (x) {
   return 1 / x;
}

+0 === -0 // true
f(+0) === f(-0) // false

此类函数的存在可能导致难以发现的错误。还有其他我应该厌倦的例子吗?

The existence of such functions can lead to difficult-to-find bugs. Are there other examples I should be weary of?

推荐答案

是的,因为 NaN!== NaN

var f = function (x) { return Infinity - x; }

Infinity === Infinity // true
f(Infinity) === f(Infinity) // false

f(Infinity) // NaN

其他一些产生 NaN 的例子,其参数可以是严格相等:

Some other examples that yield NaN whose arguments can be strictly equal:

0/0
Infinity/Infinity
Infinity*0
Math.sqrt(-1)
Math.log(-1)
Math.asin(-2)

这篇关于纯函数给出严格相等的参数,产生非严格相等的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-25 07:24