绕过“Math.max”中的变量声明

时间:2018-02-05 20:02:41

标签: javascript variables

var a = 1;
var b = 2;
if...{var c = 3}; 
var d = Math.max(a, b, c);

如果未声明某些变量,如何让 Math.max 功能正常工作? 选择现有的最大。

1 个答案:

答案 0 :(得分:1)

您提供给Math.max()的任何内容都会尝试转换为数字MDN: Math.max()

  

给定数字中最大的一个。如果至少有一个论点   无法转换为数字,返回NaN。

你要求undefined被一个很难的数字所包含,因为它是未定义的。考虑0+undefined返回NaNNumber(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