х>= X шаблон в JavaScript


при чтении источника D3.js я видел x >= x узор. Если это для обнаружения NaNs среди чисел, почему бы не просто isNaN(x) или x == x?

источник, где я столкнулся с ним:

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;
};
2 71

2 ответа:

из моего расследования, d3.min предполагается работать с любыми упорядочиваемыми значениями, А не только с числами. isNaN будет работать только цифры.

Д3 был на самом деле с помощью == в какой-то момент. этот коммит представил

хорошо, я вижу, что x >= x дает false для NaN и undefined. (В отличие от isNaN(x) или x == x.)

EDIT: хотя это один из вариантов использования x >= x, в этом случае (thx @Felix Kling для указания на это)undefined - это уже проверено.