Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript数学(参数传递、数组和“应用”方法)_Javascript - Fatal编程技术网

JavaScript数学(参数传递、数组和“应用”方法)

JavaScript数学(参数传递、数组和“应用”方法),javascript,Javascript,1) 为什么功能会失败?我认为它符合Mozilla文档中的示例,即 function getMin(x,y) { //from Mozilla documentation return Math.min(x,y) } function smallest(array){ //my own experimentation with Resig`s example return Math.min(array); } function largest(array){ //f

1) 为什么
功能会失败?我认为它符合Mozilla文档中的示例,即

 function getMin(x,y) {  //from Mozilla documentation
   return Math.min(x,y)
}



function smallest(array){ //my own experimentation with Resig`s example
  return Math.min(array);
}
function largest(array){      //from John Resig`s learning advanced JavaScript #41
  return Math.max.apply( Math, array );
}
assert(smallest([0, 1, 2, 3]) == 0, "Locate the smallest value.");
assert(largest([0, 1, 2, 3]) == 3, "Locate the largest value.");
试一试

当作为数组传递时,它将不起作用,因为在比较之前,
min
将其参数转换为数字。尝试将数组转换为数字将产生
NaN
,除非该数组包含一个看起来像数字的元素

所以

但是


Math.min
Math.max
接受任意数量的数字作为参数。您的
最小的
正在尝试传递数组,而不是数字


使用
apply
(如示例中的
max
)将数组元素粘贴为参数。

它与示例不符。文档中的[]是可选的指示符,而不是数组分隔符。

.apply(object,array)
是将数组解压到参数列表中的正确语法。仅仅将数组传递给将所有参数转换为数字的函数是没有用的,因为它只会看到NaN。

Math.min()函数可以接受任意数量的参数。但是,将单个数组传递给函数只是传递一个参数,而不是几个参数。这个参数就是数组本身。您会记得,数组是一流的值

这就是“apply”函数的全部要点,它在每个函数上都可用。它用于调用函数并向其传递由数组实例中的条目组成的参数列表。执行此操作时:

var array = [ 1, 2, 3, 4, 5 ];
someFunction.apply(irrelevant, array);
这就像打电话:

someFunction(1, 2, 3, 4, 5);

(在函数调用中,“无关”参数将用作
值。)

应用将数组作为参数对象传递给Math.min- 数学(a,b,c,d,e)

最小值作为第一个变量传递整个数组-

Math.min(x)
我知道你提供的例子是有效的,但是我想知道为什么(为了学习)我的例子,它似乎证实了Mozilla的例子,不起作用(他已经计算出这是必要的:见
最大的
)。我想你的意思是“一流”,而不是“一流”。:-)对我来说,他们都是“一流”和“一流”:-)
isNaN(Math.min([3, 4]))  // because,
isNaN(Math.min('3,4'))  // which is the same as
isNaN(Math.min(+'3,4'))  // which is equivalent to
isNaN(Math.min(NaN))
var array = [ 1, 2, 3, 4, 5 ];
someFunction.apply(irrelevant, array);
someFunction(1, 2, 3, 4, 5);