x >= x JavaScript desen
D3.js kaynak okurken x >= x
desen gördüm. Eğer sayılar arasında NaNs tespit için ise, neden sadece isNaN(x)
x == x
?
23**:
d3.min = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while ( i < n) if ((b = array[i]) != null && b >= b) {
a = b;
break;
}
while ( i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
while ( i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {
a = b;
break;
}
while ( i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
}
return a;
};
CEVAP
Benim soruşturmalar, d3.min
hiç değerler, yatırımın herhangi bir tür üzerinde çalışmak gerekiyor. isNaN
tek sayılar işe yarar.
d3 aslında bir noktada ==
kullanıyordu. This commit x == x
test tanıttı:
Aksine
Math.min
Math.max
, bana hiç mantıklı gelmiyor dönmek negatif veya pozitif sonsuzluk içind3.min
d3.max
; D3 fonksiyonları geri en düşük değer göre rasgele bir sıralama ile değil, sayısal değer. Bunun yerine, boş bir dizi minimum veya maksimum ya da yozlaşmış değerleri içeren tek bir dizi, her zaman tanımsız olmalıdır.
This commit x <= x
x == x
daha sonra tekrar x >= x
değişti) değişti:
Kendisine eşit olmayan
NaN
ek olarak, NaN geri tanımlı değerini işlevleri nedeniyle hiç olmayan nesneler olabilir. Örneğin:var o = new Number(NaN);
Burada,
o == o
doğrudur, amao <= o
false. Bu nedenle d3 mümkündü.d3 min.max ve d3.kapsam dışı hiç bu değerleri gözlemek yerine, istediği gibi onları görmezden. Düzeltmeo == o
yerine!(o <= o)
kontrol etmektir.
Nasıl JavaScript Açığa modül desen kul...
Bu JavaScript desen adı nedir ve neden...
Javascript: Desen vs Kurucu/Prototip k...
android javascript ™ ile emülatör hata...
MVC bir Tasarım Deseni ya da Mimari de...