`value >= value` 在 JavaScript 中做什么?
What does `value >= value` do in JavaScript?
下面是 d3.min.
源代码中的条件语句之一
这是为了什么检查?:
value >= value
这里是完整的源代码:
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;
}
它可能是一种针对 NaN(编辑:和未定义)进行检查的特殊形式:
const foo = 0/0; // NaN
let bar;
console.log(foo >= foo);
console.log(bar >= bar);
虽然为什么有人会那样写,而不是使用 isNaN
方法,我不知道。 它比 !isNaN(value) && value !== undefined
短,但我不确定在易读性方面的权衡是否值得。
这是通过编辑 this JSFiddle 创建的 >=
比较 table。
您可以看到 value >= value
是 true
除非 value = undefined
或 value = NaN
:
下面是 d3.min.
源代码中的条件语句之一
这是为了什么检查?:
value >= value
这里是完整的源代码:
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;
}
它可能是一种针对 NaN(编辑:和未定义)进行检查的特殊形式:
const foo = 0/0; // NaN
let bar;
console.log(foo >= foo);
console.log(bar >= bar);
虽然为什么有人会那样写,而不是使用 它比 isNaN
方法,我不知道。!isNaN(value) && value !== undefined
短,但我不确定在易读性方面的权衡是否值得。
这是通过编辑 this JSFiddle 创建的 >=
比较 table。
您可以看到 value >= value
是 true
除非 value = undefined
或 value = NaN
: