apply():方括号对于中间函数的含义是什么?

时间:2017-10-09 00:46:38

标签: javascript apply

found某段代码,似乎有效,但我不了解其中的一个方面。

> [].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

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

1 个答案:

答案 0 :(得分:4)

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

  1. this参数。
  2. 要传递给函数的参数数组。
  3. 因此函数被放入一个数组中,因为apply函数需要一个参数数组。基本上,你的代码传递了1个参数,这是一个函数。

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

    [].forEach.call('javascript', function(char) {
      console.log(`give me… ${char.toUpperCase()}`);
    });
    
    当你有一个现有的参数数组或者你不知道你将传递多少时,

    .apply最有用,这是在ES6之前的技巧。