x>;=JavaScript中的x模式
在读取D3.js的源代码时,我看到了x>;=JavaScript中的x模式,javascript,d3.js,coding-style,nan,Javascript,D3.js,Coding Style,Nan,在读取D3.js的源代码时,我看到了x>=x模式。如果是为了检测数字中的nan,为什么不干脆isNaN(x)或x==x : d3.min=函数(数组,f){ 变量i=-1,n=array.length,a,b; if(arguments.length==1){ 而(++i=b){ a=b; 打破 } 而(++ib)a=b; }否则{ 而(++i=b){ a=b; 打破 } 而(++ib)a=b; } 返回a; }; 好的,我看到x>=x对NaN和未定义的都给出false。(不同于isNaN(x)
x>=x
模式。如果是为了检测数字中的nan,为什么不干脆isNaN(x)
或x==x
:
d3.min=函数(数组,f){
变量i=-1,n=array.length,a,b;
if(arguments.length==1){
而(++i=b){
a=b;
打破
}
而(++ib)a=b;
}否则{
而(++i=b){
a=b;
打破
}
而(++ib)a=b;
}
返回a;
};
好的,我看到x>=x
对NaN
和未定义的都给出false
。(不同于isNaN(x)
或x==x
)
编辑:虽然它是x>=x
的用例之一,但在这种情况下(thx@Felix Kling指出这一点)未定义的
已被检查 根据我的调查,d3.min
应该适用于任何类型的可订购值,而不仅仅是数字isNaN
只适用于数字
d3实际上在某个时候使用了=
。介绍了x==x
测试:
与Math.min
和Math.max
不同,为d3.min
和d3.max
返回负无穷大或正无穷大是没有意义的;D3函数根据任意顺序而不是数值返回最小值。相反,空数组或仅包含退化值的数组的最小值或最大值应始终未定义
将x==x
更改为x=x
):
除了不等于自身的NaN
,您还可以拥有由于返回NaN的函数的定义值而不可排序的对象。例如:
var o = new Number(NaN);
这里,o==o
是真的,但是看看引入逻辑的提交:,@FelixKling谢谢!实际上,我正在寻找一些带注释的源代码,但似乎没有:然而,未定义的案例已经包含了!=空值
。+1巧合,!(o)
var o = new Number(NaN);