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

  • Dylan Dubay

    Dylan Dubay

    10 Temmuz 2013
  • L33TNoonProductions

    L33TNoonProd

    24 EYLÜL 2010
  • TokShogun

    TokShogun

    6 HAZİRAN 2009