apply():方括号与介于两者之间的函数是什么意思



我发现了一些代码,它似乎在工作,但我不明白它的一个方面。

> [].forEach.apply('javascript', [function(char) {
... console.log(`give me… ${char.toUpperCase()}`);
... }]);
give me a… J
give me a… A
give me a… V
give me a… A
give me a… S
give me a… C
give me a… R
give me a… I
give me a… P
give me a… T

为什么我们在这里需要第二组这些方括号,它们是什么意思?我从未见过将其放在那里的功能。谢谢。

Function.prototype.apply需要 2 个参数。

  1. this论点。
  2. 要传递给函数的参数数组。

因此,该函数被放入数组中,因为apply函数需要一个参数数组。基本上,您的代码正在传递 1 个参数,这是一个函数。

但是,您可以将.apply替换为 .call ,然后不需要参数数组,您只需向.call函数添加多个参数即可。

[].forEach.call('javascript', function(char) {
  console.log(`give me… ${char.toUpperCase()}`);
});

当您有一个现有的参数数组或您不知道要传递多少参数时,.apply 最有用,这是 ES6 之前的技巧语法。

最新更新