gpt4 book ai didi

Javascript call() 函数 - 额外参数

转载 作者:行者123 更新时间:2023-11-30 12:35:25 25 4
gpt4 key购买 nike

我正在阅读 Javascript:权威指南第 6 版。它教授 ECMAscript 5。无论如何,它没有彻底解释某些事情,例如 call() 函数。这是关于本书定义的范围:

第一个调用上下文参数之后的 call() 的任何参数都是传递给被调用函数的值。例如,要将两个数字传递给函数 f() 并像调用对象 o 的方法一样调用它,您可以使用如下代码:

f.call(o, 1, 2);

在下一节中,作者构建了一个 map 函数。我一直在研究 Ruby,所以我知道 map 是如何工作的。我的问题是关于使用 call() 函数的实现。它看起来像这样:

    var map = function(a,f, o) {                     
var results = [];
for(var i = 0, len = a.length; i < len; i++) {
if (i in a)
results[i] = f.call(o || null, a[i], i, a);
}
return results;
};

然后它定义了一个 square 函数并使用 map:

  function square(x){
return x*x;
}

var array = [1,2,3,4,5];

var results = map(array, square);

call() 函数中的ia 参数的用途是什么?如果我删除它们,我会得到相同的结果。

最佳答案

Array.prototype.map is defined将索引和数组传递给回调,以备不时之需。例如,您可以使用 Math.pow(base, exponent) 而不是 square(x):

var results = [1, 2, 3, 4, 5].map(Math.pow);
console.log(results); // [1, 2, 9, 64, 625]

这个 map 的行为方式相同。如果在特定情况下不需要参数,则不必使用它们。

关于Javascript call() 函数 - 额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227245/

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