JavaScript 中 `value >= value` 的作用是什么?

cat*_*ith 8 javascript idioms comparison-operators conditional-statements d3.js

以下是d3.min源代码中的条件语句之一。
这是检查什么?:

value >= value
Run Code Online (Sandbox Code Playgroud)

这是完整的源代码:

export default function min(values, valueof) {
  let min;
  if (valueof === undefined) {
    for (const value of values) {
      if (value != null
          && (min > value || (min === undefined && value >= value))) {
        min = value;
      }
    }
  } else {
    let index = -1;
    for (let value of values) {
      if ((value = valueof(value, ++index, values)) != null
          && (min > value || (min === undefined && value >= value))) {
        min = value;
      }
    }
  }
  return min;
}
Run Code Online (Sandbox Code Playgroud)

mbo*_*jko 9

可能是检查 NaN 的一种特殊形式(编辑:未定义):

const foo = 0/0; // NaN
let bar;
console.log(foo >= foo);
console.log(bar >= bar);
Run Code Online (Sandbox Code Playgroud)

isNaN虽然我不知道为什么有人会这样写,而不是使用该方法。它比,比如说,短!isNaN(value) && value !== undefined,但我不确定在易读性方面的权衡是否值得。

  • 它还对“未定义”评估为 false (4认同)
  • @phuzi 啊,谢谢你!现在我们可以看到好处:与显式执行这两项检查相比,代码变得更短。虽然有点迷惑。 (3认同)