SORU
21 HAZİRAN 2015, Pazar


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
21 HAZİRAN 2015, Pazar


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çin d3.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, ama o <= 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üzeltme o == o yerine !(o <= o) kontrol etmektir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011
  • PoreoticsHD

    PoreoticsHD

    22 NİSAN 2010
  • YEAH1TV

    YEAH1TV

    19 ŞUBAT 2009