var a = 1;
var b = 2;
if...{var c = 3};
var d = Math.max(a, b, c);
如果未声明某些变量,如何让 Math.max 功能正常工作? 选择现有的最大。
答案 0 :(得分:1)
您提供给Math.max()
的任何内容都会尝试转换为数字MDN: Math.max()
:
给定数字中最大的一个。如果至少有一个论点 无法转换为数字,返回NaN。
你要求undefined
被一个很难的数字所包含,因为它是未定义的。考虑0+undefined
返回NaN
,Number(undefined)
也返回NaN
。
如果您希望Math.max()
不,请遵循返回NaN
的此规则,那么您需要编写拥有 Math.max()
。
此外,根据Robby's comment,最好只过滤掉undefined
中您不想考虑的任何max()
值或任何其他值。
可能是这样的:
function myMax(...args) {
// Re write this filter to alter whatever you don't want to be considered by max()
return Math.max(...args.filter(e => e !== undefined));
}
console.log(myMax(undefined, 1, 2)); // 2
console.log(myMax(-2, -1, undefined)); // -1
console.log(myMax(undefined)); // -Infinity