我有这个简单的问题,我将由多个数字组成的输入传递给我的函数,并希望它输出最小的数字。
question7 = function(input){
minimum = Math.min(input);
console.log(minimum);
}
question7(5,-2,0,1);
为什么控制台输出5?
答案 0 :(得分:3)
在您的代码中,您只传递了5
,因为您的函数只接受一个参数。试试这个:
question7 = function(input) {
var minimum = Math.min(...input);
console.log(minimum);
}
question7([5, -2, 0, 1]);
这里我传递了一个数字数组,然后,在var minimum = Math.min(...input);
行中,我在参数之前使用了扩展语法 ...
。
有关...
的更多信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator
答案 1 :(得分:3)
您只是将5
传递给Math.min,因为这是您用question7
函数调用的第一个参数。您希望将所有arguments
或参数传递给Math.min
在这种情况下,您可以利用apply
。
var question7 = function() {
var minimum = Math.min.apply(Math, arguments);
console.log(minimum)
}
question7(5,-2,0,1);

apply
采用类似对象的数组并将其展开到单个参数中并将它们应用于this
参数,在本例中为Math
因此,对于此示例,您需要使用question7
调用的所有内容并将其应用于Math.min
函数。
在Javascript中arguments
是一个保留的关键字/变量,它包含调用函数的所有参数。
答案 2 :(得分:1)
因为你的功能是一个参数输入