首页 >web前端 >js教程 >function.call和function.ply的差异是什么?

function.call和function.ply的差异是什么?

Jennifer Aniston
Jennifer Aniston原创
2025-03-10 00:48:08955浏览

function.call和function.ply的差异是什么?

function.call和function.ply的差异是什么? 今天,我阅读了Mark Needham的一篇很棒的博客文章,标题为JavaScript:混淆“呼叫”和“ apply”。不久前,我为我们的 Tech Times>新闻通讯写了一篇文章,内容涉及JavaScript参数对象。它被称为参数:javascript奇怪。因为它具有有用的各种有趣的行为。我意识到,尽管我同时使用并申请了 在那篇文章中,我没有谈论过差异。 好吧,这实际上很简单。首先,这两种方法都期望这是第一个参数。这是赋予该函数上下文的论点。它确定JavaScript关键字的值此在所调用或应用的函数中。单一的区别在于,呼叫方法要求分别指定参数。应用方法将它们作为数组。如果您看到语法:很清楚:
function.call(thisArg[, argument1[, argument2[, ...]]]);
因此,如果您正在使用JavaScript中的参数对象,则可以使用应用方法调用任何函数,然后只需将现有参数对象作为数组参数传递。 希望这对您有用!
function.apply(thisArg[, argumentArray]);
sudhamshu的功能图像。你能弄清楚意义吗?> >在JavaScript中适用于功能调用和功能的常见问题(常见问题解答)

>在JavaScript中应用函数呼叫和函数之间的主要区别是什么?使用call()方法,您单独通过参数,被逗号分隔。另一方面,应用()方法要求将参数作为数组传递。这两种方法都允许您控制功能中“ this”的值,但是您传递其他参数的方式不同。

您可以提供使用函数呼叫和函数应用的示例吗?

>

>当然,让我们考虑一个简单的函数来添加两个数字。使用call()方法,您将执行类似的操作:

函数add(a,b){

返回a b;

}
console.log(add.call(add.call(null,1,2)); //输出:3
并使用apply()方法,它看起来像这样:函数add(a,b){
返回a b;
}
}
console.log(add.apply(null,[1,2])); //输出:3
在两种情况下,我们都将添加函数调用为null的“ this”设置(因为它在此函数中不使用),并以1和2作为参数传递。

>我何时应该使用函数呼叫而不是函数应用,反之亦然?

> call()和apply()和apply()之间的选择取决于您要如何将参数传递给该函数。如果您有一个参数列表,并且您不提前知道其号码,则Apply()可能会更方便,因为它需要数组。如果您知道参数的数量,或者根本没有参数,则可以更简单地使用call()。但是,在使用Apply()与期望多个参数的构造函数函数一起使用时,您需要小心。由于Apply()需要一个参数,因此您需要确保数组包含正确数量的元素。

>

>在函数呼叫和函数应用中应用的“此”值是什么?这使您可以控制执行函数的上下文。如果您将null或不确定为第一个参数,则该函数将在全局上下文中执行(或在严格模式下未定义)。

>

我可以使用函数呼叫和函数与箭头函数应用吗?

,而您可以从技术上使用call()使用call()和箭头函数应用()对Arrow函数进行应用,请注意,该函数不是他们本身的'''''''''''''''''''’值。取而代之的是,他们从周围的范围继承了“此”。因此,使用call()或apply()更改箭头函数的“此”值无效。

>

>函数呼叫和函数之间的性能差异是什么?但是,如果您要处理一个需要大量参数的函数,则apply()可能会稍慢,因为它需要在各种参数上迭代。

我可以使用内置的javascript函数使用函数呼叫和函数吗?

是的,是的,您可以使用call()和内置的javascript functions使用call()和应用程序。当您想使用具有不同类型的对象上的一个对象类型上存在的方法时,这可能是有用的。

>

>如果我通过太多或太少的参数来函数呼叫或函数应用程序会发生什么?

>

如果您传递了太多参数以呼叫()或应用(),那么额外的参数将被简单地忽略。如果您的参数太少,则缺少参数将设置为未定义。

>

是在所有JavaScript环境中使用的函数呼叫和函数应用方法吗?

以上是function.call和function.ply的差异是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn