下面是一个纯函数 f,f(a) !== f(b)尽管a === b(注意严格的等式)对于某些值a和b:
var f = function (x) {
return 1 / x;
}
+0 === -0 // true
f(+0) === f(-0) // false
Run Code Online (Sandbox Code Playgroud)
这些功能的存在可能导致难以发现的错误.还有其他我应该厌倦的例子吗?
Cas*_*Chu 11
是的,因为NaN !== NaN.
var f = function (x) { return Infinity - x; }
Infinity === Infinity // true
f(Infinity) === f(Infinity) // false
f(Infinity) // NaN
Run Code Online (Sandbox Code Playgroud)
产生NaN其参数的其他一些例子可以严格相等:
0/0
Infinity/Infinity
Infinity*0
Math.sqrt(-1)
Math.log(-1)
Math.asin(-2)
Run Code Online (Sandbox Code Playgroud)
这种行为是完全可以的,因为在数学理论中,这-0 === +0是真的,而1/(-0) === 1/(+0)不是,因为-inf != +inf
编辑:虽然我真的很惊讶javascript实际上可以处理这些类型的数学概念.
EDIT2:另外,你所描述的现象完全基于这样一个事实,你除以零,你应该至少从中得到一些奇怪的行为.
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |