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

  • majesticdubstep

    majesticdubs

    3 Kasım 2011
  • Phlearn Photoshop and Photography Tutorials

    Phlearn Phot

    11 EKİM 2011
  • Visual Life

    Visual Life

    3 Temmuz 2006