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)
这可能是检查 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,但我不确定在易读性方面的权衡是否值得。