我正在学习JavaScript ES6,当我运行此代码时,刚在控制台上发现了-infinity:
let numeros = [1, 5, 10, 20, 100, 234];
let max = Math.max.apply(numeros);
console.log(max);
这是什么意思?
致谢
答案 0 :(得分:8)
Function#apply
的第一个参数是thisArg,您只是将thisArg
作为数组传递,这意味着它在没有任何参数的情况下调用Math#max
。
如果未提供任何参数,则结果为-Infinity。
为了解决您的问题,请将Math
或null
设置为thisArg。
let max= Math.max.apply(Math, numeros );
let numeros= [1,5,10,20,100,234];
let max= Math.max.apply(Math, numeros );
console.log( max );
按照@FelixKling的建议,从ES6开始,您可以使用spread syntax提供参数。
Math.max(...numeros)
let numeros = [1, 5, 10, 20, 100, 234];
let max = Math.max(...numeros);
console.log(max);
答案 1 :(得分:1)
改为使用ES6 Spread:
let numeros = [1, 5, 10, 20, 100, 234];
let max = Math.max(...numeros);
console.log(max);
如@Pranav C Balan所述,-Infinity
是Math.max()
在没有给出参数的情况下应该返回的值(由spec定义):