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

  • AceHoodVEVO

    AceHoodVEVO

    12 Mayıs 2009
  • Disney Pets and Animals

    Disney Pets

    29 ŞUBAT 2012
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007