gpt4 book ai didi

javascript - 使用 Javascript math.max.apply(null 或 math..)

转载 作者:行者123 更新时间:2023-11-28 18:47:30 29 4
gpt4 key购买 nike

第一个示例

var arr1 = ['a', 'b'];
var arr2 = ['c', 'd'];

arr1.push.apply(arr1, arr2);
// arr1 is now ['a', 'b', 'c', 'd']

第二个例子

Math.max.apply(null, [-1, 5, 11, 3])

在上面的第一个中,我们可以直接使用array1.push(array2)吗,有什么不同吗?

在上面的第二个中,空参数真的让我感到困惑,而且,似乎 max mehood 需要数字类型,而不是数组?

最佳答案

如果使用arr1.push(arr2),结果会不同:

['a', 'b', ['c', 'd']]

要获得与原始 arr1.push.apply 相同的结果,您必须这样做

arr1.concat(arr2);

apply 接受数组参数并将每个元素转换为被调用函数的单独参数。当您正常调用该函数时,该数组只是一个参数。

调用 Math.max 的正常方法是将每个数字作为单独的参数进行比较:

Math.max(-1, 5, 11, 3);

为了从数组中获取参数,您必须使用 apply 来传播它们。

在第二种情况下使用 null 参数的原因是因为 apply 的第一个参数是函数的上下文,即将在函数内分配给 this 的值。正常调用函数时,上下文就是.之前的值;例如,当你写

arr1.push('x');

上下文是arr1数组。 Math.max() 不使用其上下文,但您必须传递一些内容,因此 null 是一个常见的占位符。但是,当我们使用 apply 调用 push 时,我们必须传递 arr1 作为上下文,以便它知道要修改哪个数组。有些人喜欢写

Math.max.apply(Math, [-1, 5, 11, 3]);

这样上下文就和您以正常方式调用 Math.max 一样。但在这种情况下这并不重要。

关于javascript - 使用 Javascript math.max.apply(null 或 math..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35075869/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com