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

标签 javascript apply

第一个示例

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/

相关文章:

java - Guava 18 无法使用 GWT 2.8Snapshot 和 Java 8 进行编译

javascript - 选择中选项更改的重置按钮和 Bootstrap 验证

python - 向量化 pandas 中的 apply 函数

python - Pandas:如何使用 apply 创建新的数据框

javascript - 将参数添加到参数然后应用

r - 计算 apply 语句中的百分比 (R)

javascript - 在 Javascript 中解析 JSON 文件

javascript - 如何将链接文本中的 Font Awesome 图标替换为链接点击时的不同图标?

python - 按年份分组并将函数应用于另一列 - Python、Pandas

javascript - 如何在 JavaScript 中动态地向当前执行上下文添加属性?